《数据结构与算法之美》学习笔记
文章平均质量分 91
数据结构与算法之美
久违の欢喜
Stay hungry, Stay young
展开
-
10 | 递归:如何用三行代码找到“最终推荐人”?
文章目录数据结构与算法之美入门篇10 | 递归:如何用三行代码找到“最终推荐人”?如何理解“递归”?递归需要满足的三个条件如何编写递归代码?递归代码要警惕堆栈溢出递归代码要警惕重复计算怎么将递归代码改写为非递归代码? 数据结构与算法之美 入门篇 10 | 递归:如何用三行代码找到“最终推荐人”? 如何理解“递归”? 案例: 周末小王带着女朋友去电影院看电影,女朋友问小王,咱们现在坐在第几排啊?电影院里面太黑了,看不清,没法数,怎么办? 于是小王就问前面一排的人他是第几排,小王想只要在他的数字上加一,就知原创 2022-03-09 17:03:13 · 100 阅读 · 0 评论 -
09 | 队列:队列在线程池等有限资源池中的应用
文章目录数据结构与算法之美入门篇09 | 队列:队列在线程池等有限资源池中的应用如何理解“队列”?顺序队列和链式队列循环队列阻塞队列和并发队列 数据结构与算法之美 入门篇 09 | 队列:队列在线程池等有限资源池中的应用 如何理解“队列”? 可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。 栈只支持两个基本操作:入栈 push()和出栈 pop()。队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队 enqueue(),放一个数据到队列原创 2022-03-02 09:58:04 · 202 阅读 · 0 评论 -
08 | 栈:如何实现浏览器的前进和后退功能?
文章目录数据结构与算法之美入门篇08 | 栈:如何实现浏览器的前进和后退功能?如何理解“栈”?如何实现一个“栈”?支持动态扩容的顺序栈栈在函数调用中的应用栈在表达式求值中的应用栈在括号匹配中的应用 数据结构与算法之美 入门篇 08 | 栈:如何实现浏览器的前进和后退功能? 如何理解“栈”? 后进者先出,先进者后出,这就是典型的“栈”结构。 从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。 从功能上来说,数组或链表可以替代栈,但特定的数据结构是对特定场景的抽象,而且,数组原创 2022-03-02 09:03:58 · 337 阅读 · 0 评论 -
07 | 链表(下):如何轻松写出正确的链表代码?
文章目录数据结构与算法之美入门篇07 | 链表(下):如何轻松写出正确的链表代码?技巧一:理解指针或引用的含义 数据结构与算法之美 入门篇 07 | 链表(下):如何轻松写出正确的链表代码? 技巧一:理解指针或引用的含义 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。 ...原创 2022-02-24 15:09:04 · 156 阅读 · 0 评论 -
06 | 链表(上):如何实现LRU缓存淘汰算法?
文章目录数据结构与算法之美入门篇06 | 链表(上):如何实现LRU缓存淘汰算法?五花八门的链表结构链表 VS 数组性能大比拼如何基于链表实现 LRU 缓存淘汰算法?07 | 链表(下):如何轻松写出正确的链表代码? 数据结构与算法之美 入门篇 06 | 链表(上):如何实现LRU缓存淘汰算法? 五花八门的链表结构 从下图中可以看到,数组需要一块连续的内存空间来存储,对内存的要求比较高。如果申请一个 100MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB原创 2022-02-23 16:13:15 · 246 阅读 · 0 评论 -
05 | 数组:为什么很多编程语言中数组都从0开始编号?
文章目录数据结构与算法之美入门篇05 | 数组:为什么很多编程语言中数组都从0开始编号?如何实现随机访问?低效的“插入”和“删除”容器能否完全替代数组? 数据结构与算法之美 入门篇 05 | 数组:为什么很多编程语言中数组都从0开始编号? 如何实现随机访问? 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表(Linear List)。顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。除了数组,链表、队列、栈等也原创 2022-02-22 11:50:40 · 356 阅读 · 0 评论 -
04 | 复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度
数据结构与算法之美 入门篇 04 | 复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度 最好、最坏情况时间复杂度原创 2022-02-17 17:03:39 · 307 阅读 · 0 评论 -
03 | 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
数据结构与算法之美 入门篇 03 | 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗? 大 O 复杂度表示法 算法的执行效率,粗略地讲,就是算法代码执行的时间。 int cal(int n) { int sum = 0; int i = 1; for (; i <= n; ++i) { sum = sum + i; } return sum; } 从 CPU 的角度来看,这段代码的每一行都执行着类似的操作:读数据-运算-写数据。尽管每行代码对应的原创 2022-02-10 15:52:34 · 103 阅读 · 0 评论