按照费曼学习法的理论,学习要有输出。计算机知识很多很杂,要落实到代码上,亲自动手,才能真正学会。
因此,在学习的过程中,知识点落实到代码上,落实到文字总结上。这就是创建这个项目的初衷,记录总结回顾。
- 为什么class成员函数声明和定义分开?
- 模板类的声明和实现可以分开吗?
- Encapsulation - 封装
- Inheritance - 继承
- Polymorphism - 多态
STL容器类型1
容器 | 底层数据结构 | 时间复杂度 | 其他 |
---|---|---|---|
array | 数组 | 随机读改 |
|
vector | 数组 | 随机读改、尾部插入、尾部删除 头部插入、头部删除 |
|
deque | 双端队列 | 头尾插入、头尾删除 |
|
list | 双向链表 | 插入、删除 |
|
forward_list | 单向链表 | 插入、删除 |
|
set | 红黑树 | 插入、删除、查找 |
|
multiset | 红黑树 | 插入、删除、查找 |
|
map | 红黑树 | 插入、删除、查找 |
|
multimap | 红黑树 | 插入、删除、查找 |
|
unordered_set | 哈希表 | 插入、删除、查找 |
|
unordered_multiset | 哈希表 | 插入、删除、查找 |
|
unordered_map | 哈希表 | 插入、删除、查找 |
|
unordered_multimap | 哈希表 | 插入、删除、查找 |
一些常见的算法,比如排序。
算法名称 | 平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 | 排序方式 | 稳定性 |
---|---|---|---|---|---|---|
冒泡排序 | In-place | 稳定 | ||||
选择排序 | In-place | 不稳定 | ||||
插入排序 | In-place | 稳定 | ||||
快速排序 | In-place | 不稳定 | ||||
归并排序 | Out-place | 稳定 | ||||
堆排序 | In-place | 不稳定 | ||||
希尔排序 | In-place | 不稳定 | ||||
计数排序 | Out-place | 稳定 | ||||
桶排序 | Out-place | 稳定 | ||||
基数排序 | Out-place | 稳定 |
注:
- In-place: 不需要额外的空间,原地修改序列实现算法。其空间复杂度为
$O(1)$ 。 - Out-place: 需要额外的空间来实现算法。其空间复杂度一般为O(
$n)$ 或O($k)$ 等。 - 稳定性:稳定的排序算法会保持相同元素的相对位置不变。
通常会把它们分为三类2:
- 冒泡排序、选择排序、插入排序
- 堆排序、归并排序、快速排序
- 计数排序、基数排序 、桶排序
前两类是基于比较的排序算法。对n个元素进行排序时, 若元素比较大小的时间复杂度为
第三类不直接比较大小,而是对被排序的数值采取按位划分、分类映射等处理方式。其时间复杂度不仅与 n 有关,还与数值的大小范围 m 有关。
我们在写代码的时候是用标准库的,那么在 STL 中的排序算法是如何实现的,让我们来一探究竟:STL 中的 sort 函数详解。
ChatGPT-3.5/4 火的不得了,引爆整个网络,推上每天都在讨论他,各种基于 ChatGPT 的应用层出不穷,GitHub上相关的项目更是爆发增长,新出一个开源项目很快就能拿到几k几十k的star,有一个比较有意思的项目是训练自己的私人助手(privateGPT),用自己的资料去训练。我尝试了一下对显卡和内存的要求比较高,速度很慢。对于程序员来说,最大的应用就是让他帮我们写代码了。在学习过程中,看不懂的代码直接丢给他,很快就生成详细的解答。
OpenAI 目前没有公布 ChatGPT 的论文,不过官网博客有说和 InstructGPT 吧。
We trained this model using Reinforcement Learning from Human Feedback (RLHF), using the same methods as InstructGPT, but with slight differences in the data collection setup.
InstructGPT 论文看这里:InstructGPT 原理 GPT 论文看这里:GPT 1-3
Models | Parameters | Supported | Date | References | Papers |
---|---|---|---|---|---|
GPT-1 | Text | 06/2018 | 5.5k | Paper3 | |
GPT-2 | Text & Image | 02/2019 | 6k | Paper4 | |
GPT-3 | 175B | Text | 05/2020 | 10k | Paper5 |
InstructGPT | 1.3B | Text | 03/2022 | 923 | Paper6 |
GPT-4 | 100T | Text & Image | 05/2023 | 16 | Technical Report7 |
人体姿态估计 (Human Pose Estimation) RTMPose 关键点检测
这里记录刷过的算法题。
LeetCode Top 100 Liked Questions
# | Title | Solution | Difficulty | Topics | Others |
---|---|---|---|---|---|
1 | 1. Two Sum | C++ | Easy | Array, Hash Table |
Footnotes
-
The C++ Standard Library A Tutorial and Reference Second Edition Nicolai M. Josuttis ↩
-
Improving Language Understanding by Generative Pre-Training ↩
-
Training language models to follow instructions with human feedback ↩