数据结构与算法之美
王争
前Google工程师
立即订阅
71638 人已学习
课程目录
已完结 75 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从今天起,跨过“数据结构与算法”这道坎
免费
入门篇 (4讲)
01 | 为什么要学习数据结构和算法?
02 | 如何抓住重点,系统高效地学习数据结构与算法?
03 | 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
04 | 复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度
基础篇 (38讲)
05 | 数组:为什么很多编程语言中数组都从0开始编号?
06 | 链表(上):如何实现LRU缓存淘汰算法?
07 | 链表(下):如何轻松写出正确的链表代码?
08 | 栈:如何实现浏览器的前进和后退功能?
09 | 队列:队列在线程池等有限资源池中的应用
10 | 递归:如何用三行代码找到“最终推荐人”?
11 | 排序(上):为什么插入排序比冒泡排序更受欢迎?
12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?
13 | 线性排序:如何根据年龄给100万用户数据排序?
14 | 排序优化:如何实现一个通用的、高性能的排序函数?
15 | 二分查找(上):如何用最省内存的方式实现快速查找功能?
16 | 二分查找(下):如何快速定位IP对应的省份地址?
17 | 跳表:为什么Redis一定要用跳表来实现有序集合?
18 | 散列表(上):Word文档中的单词拼写检查功能是如何实现的?
19 | 散列表(中):如何打造一个工业级水平的散列表?
20 | 散列表(下):为什么散列表和链表经常会一起使用?
21 | 哈希算法(上):如何防止数据库中的用户信息被脱库?
22 | 哈希算法(下):哈希算法在分布式系统中有哪些应用?
23 | 二叉树基础(上):什么样的二叉树适合用数组来存储?
24 | 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?
25 | 红黑树(上):为什么工程中都用红黑树这种二叉树?
26 | 红黑树(下):掌握这些技巧,你也可以实现一个红黑树
27 | 递归树:如何借助树来求解递归算法的时间复杂度?
28 | 堆和堆排序:为什么说堆排序没有快速排序快?
29 | 堆的应用:如何快速获取到Top 10最热门的搜索关键词?
30 | 图的表示:如何存储微博、微信等社交网络中的好友关系?
31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系?
32 | 字符串匹配基础(上):如何借助哈希算法实现高效字符串匹配?
33 | 字符串匹配基础(中):如何实现文本编辑器中的查找功能?
34 | 字符串匹配基础(下):如何借助BM算法轻松理解KMP算法?
35 | Trie树:如何实现搜索引擎的搜索关键词提示功能?
36 | AC自动机:如何用多模式串匹配实现敏感词过滤功能?
37 | 贪心算法:如何用贪心算法实现Huffman压缩编码?
38 | 分治算法:谈一谈大规模计算框架MapReduce中的分治思想
39 | 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想
40 | 初识动态规划:如何巧妙解决“双十一”购物时的凑单问题?
41 | 动态规划理论:一篇文章带你彻底搞懂最优子结构、无后效性和重复子问题
42 | 动态规划实战:如何实现搜索引擎中的拼写纠错功能?
高级篇 (9讲)
43 | 拓扑排序:如何确定代码源文件的编译依赖关系?
44 | 最短路径:地图软件是如何计算出最优出行路径的?
45 | 位图:如何实现网页爬虫中的URL去重功能?
46 | 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?
47 | 向量空间:如何实现一个简单的音乐推荐系统?
48 | B+树:MySQL数据库索引是如何实现的?
49 | 搜索:如何用A*搜索算法实现游戏中的寻路功能?
50 | 索引:如何在海量数据中快速查找某个数据?
51 | 并行算法:如何利用并行处理提高算法的执行效率?
实战篇 (5讲)
52 | 算法实战(一):剖析Redis常用数据类型对应的数据结构
53 | 算法实战(二):剖析搜索引擎背后的经典数据结构和算法
54 | 算法实战(三):剖析高性能队列Disruptor背后的数据结构和算法
55 | 算法实战(四):剖析微服务接口鉴权限流背后的数据结构和算法
56 | 算法实战(五):如何用学过的数据结构和算法实现一个短网址系统?
加餐:不定期福利 (6讲)
不定期福利第一期 | 数据结构与算法学习书单
不定期福利第二期 | 王争:羁绊前行的,不是肆虐的狂风,而是内心的迷茫
不定期福利第三期 | 测一测你的算法阶段学习成果
不定期福利第四期 | 刘超:我是怎么学习《数据结构与算法之美》的?
总结课 | 在实际开发中,如何权衡选择使用哪种数据结构和算法?
《数据结构与算法之美》学习指导手册
加餐:春节7天练 (7讲)
春节7天练 | Day 1:数组和链表
春节7天练 | Day 2:栈、队列和递归
春节7天练 | Day 3:排序和二分查找
春节7天练 | Day 4:散列表和字符串
春节7天练 | Day 5:二叉树和堆
春节7天练 | Day 6:图
春节7天练 | Day 7:贪心、分治、回溯和动态规划
加餐:用户学习故事 (2讲)
用户故事 | Jerry银银:这一年我的脑海里只有算法
用户故事 | zixuan:站在思维的高处,才有足够的视野和能力欣赏“美”
结束语 (3讲)
结束语 | 送君千里,终须一别
第2季回归 | 这一次,我们一起拿下设计模式!
打卡召集令 | 60 天攻克数据结构与算法
免费
数据结构与算法之美
登录|注册

结束语 | 送君千里,终须一别

王争 2019-02-20
专栏到今天真的要结束了。在写这篇结束语的时候,我的心情还是蛮复杂的,既有点如释重负,又有点不舍。如释重负,是因为我自己对专栏的整体质量非常满意;不舍,是因为我还想分享更多“压箱底”的东西给你。
专栏是在 2018 年 9 月发布的。在发布后的两三天时间里,就有 2 万多人订阅,同时也引来了很多争议。有人说,我就是随便拿个目录就来“割韭菜”。也有人说,数据结构和算法的书籍那么多,国外还有那么多动画、视频教程,为什么要来学我的专栏?
这些质疑我都非常理解,毕竟大部分基础学科的教材,的确是国外的更全面。实际上,在专栏构思初期,我就意识到了这一点。不夸张地讲,我几乎读过市面上所有有关数据结构和算法的书籍,所以,我也深知市面上的数据结构和算法书籍存在的问题。
尽管有很多书籍讲的通俗易懂,也有很多书籍全面、经典,但是大部分都偏理论,书中的例子也大多脱离真实的软件开发。这些书籍毫无疑问是有用的,但是看完书之后,很多人只是死记硬背了一些知识点而已。这样填鸭式的学习,对于锻炼思维、开拓眼界并没有太多作用。而且,从基础理论到应用实践,有一个非常大的鸿沟要跨越,这是大学教育的普遍不足之处,这也是为什么我们常常觉得大学里学过的很多知识都没用。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《数据结构与算法之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(292)

  • yongxiang
    我的学习历程是怎样的?

    刚开始学习启动晚了,再加上学习方法不对、静不下心来,始终不得要领,课后题看了也完全没有概念,很是烦躁。

    最近两个月终于摸索到了合适清晰的学习方法:正如老师的文章一样,把注意点放在发现问题,解决问题上。

    采用笨办法,拿一堆A4白纸、铅笔、便利贴,在便利贴上写下要学习的章节、1个小时的起始学习时间、完成后面说的步骤的哪几部分,然后郑重地贴在白纸上,最后在规定的时间结束时,写下完成的情况。

    把学习的过程分解成以下的步骤:
    1. 归纳提炼问题:先把标题、课前问题,课后问题写下来,把概述和段标题提炼成问题写下来,把文章的内容分解归纳成一个接一个问题写下来;
    2. 查找答案:然后,将文章读一遍,看看前面问题的答案在哪里,文章还有没有回答其他的问题;
    3. 动手实践:对着代码将文章中的算法过程的图自己推导画一遍,找出算法的关键线索在哪里;最后,将代码回忆输入编辑器,将文章图片中的例子数据输入进行测试,同时加入打印日志观察顺序过程,看看自己回忆输入的代码犯了什么错误,记录下来。

    这样一遍下来,心中终于感觉踏实了,自己不用看文章也能写出代码来了,感觉掌握了这个算法的思想,紧跟老师的思路。

    这两个多月,基本上每个周末都会去麦当劳学习(找了很多地方,发现只有在麦当劳能静下心来学习,学习效率最高)。每次有新的章节先学新的,如果章节中有联系前面章节的,抓紧把这些章节的进度赶上去。睡前有空,就翻一遍每次学习记录的笔记,回忆一下。

    目前的学习进度是多少?

    目前终于完成了大概70%的章节的学习,当然这一轮还没结束,课后题也还没开始完成,有些章节学了又忘了,对复杂度分析还是不熟练。我想还需要再重点突破一下,然后再来回滚动学习两遍。

    这门课,我收获了什么?

    一是,找到了合适的学习方法:问题、动手、分解,以及合适的场所;二是,收获了自信心,相信自己能学会算法;三是,现在看其他书籍、代码的时候,会注意它使用了什么数据结构与算法来,有什么优缺点,不像以前,即使看到了也不知道是什么。

    最后,非常感谢王争老师,把这么宝贵的经验分享出来,提供了深入浅出、联系实际的文章。让我觉得,自己有希望成为一位真正的软件工程师,不是一辈子打杂。

    路漫且长,终于有了点光,可以继续赶路。

    作者回复: 老弟,写的太好了,有点感动!我觉得我做了一件非常有意义的事情。

    2019-02-25
    1
    54
  • Jerry银银
    送君千里,终有一别;
    人在江湖,终会再见。
    2019-02-20
    46
  • iPiece
    争哥,你是带我进算法的人。
    2019-02-20
    30
  • 广行
    你是结束了,但我才刚刚开始。

    作者回复: 不急 慢慢来

    2019-02-24
    21
  • Non-constant
    知识需要沉淀,不可能学第一遍就100%掌握并学会应用。所以,反复迭代,忘了就多翻翻,慢慢地把知识进行内化,这,才是学习之道!
    有时候慢,才是最快的。
    2019-02-20
    12
  • 我来也
    潜水党报道系列+1
    从专栏刚出时就订阅了,从未落下每一篇文章.想不到转眼就近半年了.
    可能第一遍有些知识没太懂,没关系.
    我最近在复习动态规划的那3篇文章,又对老师说的"从由来讲起,做到让你知其然、知其所以然",有了更深的认同感.
    别的地方,可能着重介绍状态定义和写出动态方程,有些复杂的场景会带一句"大家记住这个方程就可以了,不需要知道怎么来的".
    但是老师的专栏真的是从基础理论"一个模型三个特征",从回溯->回溯+递归->动态规划->优化动态规划的空间复杂度,再到问题的变种,更到更复杂的实际问题.
    让我知道了是怎么一步一步演变而来.
    除了让我对该知识有了更深入及牢固的了解,还可以把该优化思想应用到平常工作中.
    我是非科班出身,从没系统的学习过数据结构与算法,自己也下不了决心去刷专门的书籍.
    但是跟着老师的专栏,我并没觉得枯燥,反倒觉得很有意思.可能是老师的讲解与实际结合的很紧密,也可能是老师的讲解让我知道了厉害的算法是怎么从无到有的.
    感谢老师的付出,让我收获了很多,谢谢!
    2019-02-20
    10
  • hopeful
    作为一个现在已经是大三的学生,很早就已经知道数据结构与算法对于以后在编程领域长远发展的重要性,也知道大厂面试也会将数据结构与算法视为面试重点,所以在数据结构与算法这方面一直很重视。我在大二上学期的时候学了数据结构之后,去leetcode刷题的时候却连一些最简单的题目都不会,于是在下学期的时候花了很多时间去刷题。但是在刷题的过程中经常会陷入一些细节问题中无法脱离出来,没有办法写出通过所有case的代码,只能在网上看别人是怎么写的,但是过了几天又忘了。如此反反复复,让我觉得很受打击,同时也无法感受到算法在实际开发中的作用。对于我而言,这个专栏好就好在它是从对数据结构与算法的实践运用出发,告诉我们某些算法可以用在哪里,同时也没有涉及到太多太难的算法题,再加上基础篇的大部分都是已经学过的内容,所以看起来不是特别吃力,同时高级篇和实践篇对我而言也不像算法题那样难得离谱。可能是我智商不够,可能是我刷题不够多,可能是我一直掌握不到刷题方法,导致在刷题这方面我一直没什么进步,进大厂可能没什么希望了。但学了这个专栏后,我觉得,如果我能在毕业前把这个专栏的内容都吃透,那么,在大学毕业时,在数据结构与算法这方面,就没有什么遗憾了。谢谢王争老师和《数据结构与算法之美》专栏!

    作者回复: 我刷过上千道题,刷题这件事情并不难。开始刷的时候,挫败感肯定是有的。要稍微掌握点技巧,循序渐进的刷。我有空了可以写写我刷题的一些经验、教训。

    2019-02-20
    8
  • Mr David
    真心不舍!在极客的第一个专栏,真的学会了很多以前在书本上搞不明白的知识,而且专栏的实践性在工作中也给了很多启发,真心很好的专栏,目前在二刷,以后还会三刷,相信每次都会有新的体会!谢谢王争老师!提个小小的建议,希望老师能建个群,这样以后还能有机会继续跟老师和伙伴们交流~
    2019-02-20
    8
  • DY
    感谢王争老师,数据结构和算法确实让我学到了很多东西,发现了很多可以提升的地方。越学习越发现这个课程可以让我静下心来学习,更有动力去学习二遍三遍,并动手练练,因为第一遍的学习感觉自己如果再努努力多写代码练练,这门课程完全可以掌握的。看的第一遍使自己对数据结构和算法非常有信心。老师讲的太好了,期待推出新的专栏。

    作者回复: 我的设计模式很快就要上线了...

    2019-08-07
    3
    6
  • ./+-@YOU
    极客第一个专栏,一个字:值
    2019-02-20
    6
  • 润兹
    默默支持,我是默默的潜水党!
    2019-02-20
    6
  • Jiemr
    《数据结构与算法之美》是我买的第一个专栏,也是花时间最多的一个专栏,为此特意买了一个iPad在路上阅读,可惜app没有iPad版本。算法方面的书籍我买了很多,可这些书籍大部分都是很枯燥的理论为主,学习的时间也不连续,很难静下心来慢慢理解消化;本专栏以图文并茂的形式讲解理论知识则更容易理解一些,回过头再看书也更轻松。
    我大部分时间都在潜水,第一次留言提问貌似王老师没看到,第二次留言却是告别,不知道之后遇到问题还会不会有回复?
    期待王争老师的下一个专栏。
    2019-02-20
    6
  • 牧民牛仔
    王争老师这个专栏,可以说是花钱花得最值得一个课程了。五个月的学习,把以前学的那些易忘的理论知识一一梳理了一遍。特别是老师通过把工程中遇到的问题作为引子,慢慢地引入到对应的数据结构和算法的理论中这种教学方式,是非常易于接受的学习过程。基本上对于所有的算法和数据结构,日后再看到的话,只要想起老师提到的工程中的例子,就能全部都有印象了。
    最后说一句谢谢,高质量的课程很少有,谢谢老师及你们团队的辛勤付出。
    2019-02-21
    5
  • Heart_K
    谢谢王争老师,为小伙伴们提供这么优质的专栏。课程结束了,但刷如此精品的内容的我们还没结束,潜水党前来报道,有些内容还没学太懂,听老师和放送内容的小伙伴分享,知道这是正常的,只要正视问题沉下心一定会慢慢攻克搞懂,做到知其然,知其所以然。期待老师以后能继续分享同样精品的课程。
    难忘今宵,难忘今宵,
    共祝愿老师好,学习专栏小伙伴好,
    下个专栏再相邀,
    青山在 人未老 人未老!
    2019-02-20
    5
  • 张玉锋
    学应用物理的,毕业一年半,能进字节跳动和这个专栏有很大关系,感谢王争老师。
    2019-02-21
    1
    4
  • lianlian
    王争老师在开篇词说过“基础知识就像是一座大楼的地基,它决定了我们技术的高度”,和我以前说过的“基础不是100分考60分,而是建摩天大楼的地基”好像啊!这算是神交吗?哈哈(ಡωಡ)hiahiahia这个专栏是我在极客时间订阅的第一个专栏,2018年11月11晚上,那时信号不好,我等到12号凌晨一点多购买成功,连读2篇才愿意睡觉,这个专栏太棒了,价值远超价格。我时常复习和练习,在走路,吃饭和空闲时间。王争老师若还有其他专栏,我会毫不犹豫继续订阅学习。
    2019-02-20
    4
  • 三木子
    常回家看看哈
    2019-02-20
    4
  • kabuka
    感謝大佬解決了我一直以來的困惑,這是我認為質量最高的專欄!感謝!
    2019-07-25
    3
  • 路过蜻蜓
    努力吧,一刷完成
    2019-04-10
    3
  • humor
    老师,谷歌不用加班,那么多产品是怎么做出来的呢?我觉得有deadline的产品有时候也会加班吧😄

    作者回复: 效率高啊。没有什么牛逼的产品是通过体力堆砌出来的!实际上,在谷歌,大家很鄙视加班的人(=没能力的人),所以,加班都是回家偷偷的加!😄

    2019-03-02
    3
收起评论
99+
返回
顶部