数据结构和算法路线

书籍推荐 

入门:

《大话数据结构》(非常适合初学者,除了图,全部看完了)

《算法图解》(讲了几种典型算法,看不进去)

作为入门,看看这本书,能让你对数据结构和算法有个大概的认识。

当然,这些入门书共同的问题是,缺少细节,不够系统,也不够严谨。

基础:

《数据结构与算法分析:C语言描述》(没看完)

实战:(要求不高,没进行)

《剑指 offer》《编程珠玑》《编程之美》

《剑指 offer》这本书的目的非常明确,就是为了面试。

这本书几乎包含了所有常见的、经典的面试题。如果能搞懂这本书里的内容,应付一般公司的面试应该不成问题。

《编程珠玑》这本书的豆瓣评分非常高,有 9 分。

这本书最大的特色就是讲了很多针对海量数据的处理技巧。这个可能是其他算法书籍很少涉及的。面试的时候,海量数据处理的问题也是经常会问的,特别是校招面试。不管是开拓眼界,还是应付面试,这本书都很值得一看。

《编程之美》这本书有多位作者,其中绝大部分是微软的工程师,所以书的质量很有保证。不过,这里面的算法题目稍微有点难,也不是很系统,这也是我把它归到面试这一部分的原因。如果你有一定基础,也喜欢钻研些算法问题,或者要面试 Google、Facebook 这样的公司,可以拿这本书里的题,先来自测一下。

学习程度:

在学习某些算法时,也可以借助画图来加深自己的理解。可以边阅读代码边画图,这样可以更快理清代码的实现逻辑。

在通过“多画”实现理解存储结构和实现逻辑的基础上,初学者还要“多撸码”编写实现代码。对于某一种存储结构或者算法,没有 3 遍以上自己独立的实现过程,是很难做到融会贯通的。

链表,二叉树,堆,队列,常见排序算法及其改进(快排,归并,冒泡,插入)等都是要掌握的。

Linux内核中就用到了很多的链表,二叉树等。掌握这部分内容对于我们以后跳槽,深入研究操作系统都有很大的帮助

主要刷链表,队列,哈希表,排序,二叉树,二分查找,双指针,栈,堆,二叉搜索树,每日一题

(刷题前先阅读相关知识,再刷题)

数据可视化网站:

建议把每种数据结构,通过可视化的方式展现,观察对其进行各种操作时发生的情况,加深理解。并动手进行实现。

这里推荐几个非常棒的数据结构可视化网站

(1)visualgo

VisuAlgo一个比较不错的功能是除了可以动态演示算法之外,还可以按步骤进行动画演示甚至是交互,并且包含了每个步骤的解释,的确有点酷炫了。

https://visualgo.net/zh

(2)Data Structure Visualizations

Data Structure Visualization这个网站则提供了一种将数据结构和算法进行可视化的功能,并开发了交互式的动画展示,便于理解和掌握数据结构+算法。

   

视频推荐:

1. 【郝斌】-数据结构入门 https://www.bilibili.com/video/BV11s41167h6?p=1

讲了C语言的一些补充,链表,队列,栈,树,讲的太过细致,略显啰嗦,看了几节课弃了

2. 数据结构-浙江大学(看完了,讲的精简) https://www.bilibili.com/video/BV1JW411i731?p=1

B站很多小伙伴都管陈越老师叫做陈越姥姥,陈姥姥的课简单易懂,二叉树和链表说的多,但是对于图太少,后面概念解释多程序少,对于新手不友好,并且这门课程到中后半段是另一位老师讲的,何老师。何老师讲解的也是非常的通俗易懂,并且拥有着强者的发型。可以搭配《大话数据结构》看

3. 数据结构与算法基础(青岛大学-王卓)(跳着看,讲的很细致)

https://www.bilibili.com/video/BV1nJ411V7bd?p=1

王卓老师基本上把大学数据结构期末考试的重点全部都讲了,内容和 408 高度吻合,也是非常的适合考研人,还有在这里提一下王道考研的数据结构还是很不错的,总之学习数据结构重点还是需要理解,要多做题才行。

实战:

leecode刷题步骤:

按标签做题

刚起步时,建议先做简单的、特定标签下的题。

你可以按照自己喜欢的顺序来选择标签做题:例如先做数据结构相关的题,比如数组、字符串、链表等;然后再做算法相关的题,比如二分、动态规划、广搜、深搜等。

这里推荐一个网站 OI Wiki,上面包含了编程竞赛中的基础知识、常见题型、解题思路以及常用工具等,内容非常详尽。可以先在该网站上复习某个知识点,然后再前往相关标签刷题,配合食用更健康~

没有思路的处理方法:

如果没有思路,那就去看题解吧!

当然,看完解答你还要做以下这些事:

  1. 理解题解的内容
  2. 关掉题解,自己用代码实现一遍
  3. 把这道题放入自己的小本本里,等待下次复盘,下次复盘的时候就不要再看答案啦

跳出标签

按标签刷了足够多的题以后,你已经大概拥有一个特定类型的解题框架了,即知道什么样类型的题目该用什么套路做。

不过这个解题框架还在特定的标签下。比如你在动态规划标签下做题,那么你拿到题之前就会知道这题要用动态规划来做。这样当然是不行的,你去面试人家才不会告诉你面试题是什么类型,你要自己去思考发现。

所以我们要做的就是跳出标签,自己去随机找题做,在不知道题目类型的情况下靠自己去解决这道题

探寻最优解

当你摆脱标签的束缚并且做了足够多的题以后,你再拿到一道题的时候,眼前就会自然而然地浮现出这道题的考点和解决套路(是的就是这么魔幻)。也就是说,你已经形成了自己的解题框架了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值