数据结构与算法之美
为工程师量身打造的数据结构与算法私教课
王争  前 Google 工程师
总榜 第2名
专栏
已完结·共 81 讲
|
28.4w 人已学
|
收藏
数组简单易用,在实现上使用的是连续的内存空间,可以借助 CPU 的缓存机制,预读数组中的数据,所以访问效率更高。而链表在内存中并不是连续存储,所以对 CPU 缓存不友好,没办法有效预读。
来自:06 | 链表(上):如何实现LRU缓存淘汰算法?
55 人划过
如果我们按照 j 从小到大处理的话,会出现 for 循环重复计算的问题
来自:40 | 初识动态规划:如何巧妙解决“双十一”购物时的凑单问题?
39 人划过
借助稳定排序算法,这个问题可以非常简洁地解决。解决思路是这样的:我们先按照下单时间给订单排序,注意是按照下单时间,不是金额。排序完成之后,我们用稳定排序算法,按照订单金额重新排序。两遍排序之后,我们得到的订单数据就是按照金额从小到大排序,金额相同的订单按照下单时间从早到晚排序的。为什么呢?
来自:11 | 排序(上):为什么插入排序比冒泡排序更受欢迎?
25 人划过
你为什么要学习数据结构和算法呢?
来自:01 | 为什么要学习数据结构和算法?
21 人划过
最坏情况下,终止顶点 t 离起始顶点 s 很远,需要遍历完整个图才能找到。这个时候,每个顶点都要进出一遍队列,每个边也都会被访问一次,所以,广度优先搜索的时间复杂度是 O(V+E),其中,V 表示顶点的个数,E 表示边的个数。当然,对于一个连通图来说,也就是说一个图中的所有顶点都是连通的,E 肯定要大于等于 V-1,所以,广度优先搜索的时间复杂度也可以简写为 O(E)。
来自:31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系?
13 人划过
。分治算法要求分割成的子问题,不能有重复子问题,而动态规划正好相反,动态规划之所以高效,就是因为回溯算法实现中存在大量的重复子问题。
来自:41 | 动态规划理论:一篇文章带你彻底搞懂最优子结构、无后效性和重复子问题
13 人划过
我们画出一个二维的状态表,按行依次来填充状态表中的每个值
来自:42 | 动态规划实战:如何实现搜索引擎中的拼写纠错功能?
8 人划过
压缩列表这种存储结构,一方面比较节省内存,另一方面可以支持不同类型数据的存储。而且,因为数据存储在一片连续的内存空间,通过键来获取值为列表类型的数据,读取的效率也非常高。
来自:52 | 算法实战(一):剖析Redis常用数据类型对应的数据结构
6 人划过
循环结束的条件也不一样。Dijkstra 算法是在终点出队列的时候才结束,A* 算法是一旦遍历到终点就结束。
来自:49 | 搜索:如何用A*搜索算法实现游戏中的寻路功能?
5 人划过
我们可以针对数据,构建一个布隆过滤器,并且存储在内存中。当要查询数据的时候,我们可以先通过布隆过滤器,判定是否存在。如果通过布隆过滤器判定数据不存在,那我们就没有必要读取磁盘中的索引了。对于数据不存在的情况,数据查询就更加快速了
来自:50 | 索引:如何在海量数据中快速查找某个数据?
4 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

王争

前 Google 工程师

王争,前 Google 工程师,从事 Google 翻译相关系统的开发,深入研究算法十余年。现任某金融公司核心系统资深系统架构师,负责公司核心业务的架构设计和开发。 他将采用最适合工程师的学习方式,不拘泥于某一特定编程语言,从实际开发场景出发,由浅入深教你学习数据结构与算法的方法...查看更多
编辑推荐
讲师的其他课程
设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者

113讲 | 123454 人已学习

¥98¥299
包含这门课的学习路径

计算机基础知识

12门课程 96.5w人学习
看过的人还看了
如何设计一个秒杀系统
许令波
前阿里巴巴高级技术专家

10讲 | 56200 人已学习

¥39
代码精进之路
范学雷
前 Oracle 首席软件工程师,Java SE 安全组成员,OpenJDK 评审成员

48讲 | 38236 人已学习

¥59¥129
分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家

43讲 | 39667 人已学习

¥59¥129
算法面试通关 40 讲
覃超
Sophon Tech 创始人,前 Facebook 工程师,卡内基梅隆大学计算机硕士

62讲 | 78355 人已学习

¥68¥199
编译原理之美
宫文学
北京原点代码 CEO

45讲 | 46207 人已学习

¥59¥129
白话法律 42 讲
周甲徳
京师律师事务所合伙人,资深律师

47讲 | 20530 人已学习

¥59¥129