数据结构与算法之美
文章平均质量分 94
KIKIo_
还在努力的码农
展开
-
08 | 栈:如何实现浏览器的前进和后退功能?
文章目录浏览器的前进、后退功能,我想你肯定很熟悉吧?当你依次访问完一串页面 a-b-c 之后,点击浏览器的后退按钮,就可以查看之前浏览过的页面b 和 a。当你后退到页面 a,点击前进按钮,就可以重新查看页面 b 和 c。但是,如果你后退到页面 b 后,点击了新的页面 d,那就无法再通过前进、后退功能查看页面 c 了。假设你是 Chrome 浏览器的开发工程师,你会如何实现这个功能呢?如何理解“栈”?关于“栈”,我有一个非常贴切的例子,就是一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个原创 2022-05-23 10:14:01 · 586 阅读 · 0 评论 -
07 | 链表(下):如何轻松写出正确的链表代码?
文章目录技巧一:理解指针或引用的含义将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。在编写链表代码的时候,我们经常会有这样的代码:p->next=q。这行代码是说,p 结点中的next 指针存储了 q 结点的内存地址。还有一个更复杂的,也是我们写链表代码经常会用到的:p->next=p->next->next。这行代码表示,p 结点的 next 指针存储了 p 结点的下下原创 2022-05-21 15:44:42 · 75 阅读 · 0 评论 -
链表(上):如何实现LRU缓存淘汰算法?
文章目录单链表循环链表双向链表**链表 VS 数组性能大比拼**今天我们来聊聊“链表(Linked list)”这个数据结构。学习链表有什么用呢?为了回答这个问题,我们先来讨论一个经典的链表应用场景,那就是 LRU 缓存淘汰算法。缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存、数据库缓存、浏览器缓存等等。缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓存淘汰策略来决定。常见的策略有三种:先进先出策略 F原创 2022-05-21 13:12:00 · 299 阅读 · 0 评论 -
数据结构与算法之美01-04讲
文章目录一、为什么要学习数据结构和算法?1、为什么要学习数据结构与算法2、算法思想在工作中带来的好处二、如何抓住重点,系统高效地学习数据结构与算法?1、什么是数据结构?什么是算法?2、20 个最常用的、最基础数据结构与算法三、 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?1、为什么需要复杂度分析?2、大O复杂度表示法3、时间复杂度分析4、几种常见时间复杂度实例分析4.1. O(1)4.2. O(logn)、O(nlogn)4.3. O(m+n)、O(m*n)5、空间复杂度分析四、复杂度分析(原创 2022-05-20 16:46:36 · 522 阅读 · 0 评论