Hi!
从今天开始学习极客时间王争老师的数据结构与算法之美专栏,并记录笔记。
第一节 为什么学习数据结构和算法
- 找工作: 校招的时候,参加面试的同学没有通常没有实际项目经验,公司只能考察他们的基础知识是否牢固。社招就更不用说了,越是厉害的公司越是注重考察数据结构和算法这种基础类的知识。相对于短期的能力,他们更看重你的长期能力。
- 工作后 (1)我们学习任何知识都是为了“用”的,是为了解决实际工作问题的。 (2)业务开发,虽然平时都只是做增删改查或者使用已经封装好的API接口、类库来堆砌、翻译业务逻辑,很少用到数据结构和算法,但是不需要自己实现并不代表什么都不需要了解。 在我们使用的各种框架中,一般都揉和了很多基础数据结构和算法的设计思想。掌握数据结构和算法,不管对于了解框架源码还是理解其背后的设计思想,都是非常有用的。 如果能明白接口、类库的底层原理,就能更好的使用它们。 (3)基础架构研发工程师,写出达到开源水平的框架才是你的目标。
- 编程能力 性能好坏起码是其中的一个判断标准。 掌握了数据结构和算法,你看待问题的深度,解决问题的角度就会完全不一样。
第二节 如何抓住重点、系统高效上午学习数据结构与算法
- 什么是数据结构和算法 (1)广义上:数据结构是一组数据的存储方式,算法是作用在数据结构上的一组操作方法。 (2)狭义上:是指一些著名的数据结构和算法。 (3)数据结构是服务于算法的,算法是作用在特定的数据结构之上的。
- 算法时间复杂度分析
这个几乎占了数据结构和算法这门课的半壁江山,是数据结构和算法学习的精髓。
- 20个最常用、最基础的数据结构和算法 初学者学习算法的重点是掌握这20个最常用、最基础的数据结构和算法,不管是应付面试还是工作需要,只要集中精力逐一攻克这20个知识点就足够了。 这里面有10个数据结构:数据、链表、栈、队列、散列表、二叉树、堆、图、跳表、Trie树;10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。 学习过程中不要死记硬背,不要为了学习而学习,要学习它的来历、自身的特点、适合解决的问题以及实际应用场景。 4.学习技巧 (1)边学边练,适度刷题。
可以适度刷题,但一定不要浪费太多时间在刷题上。学习的目的还是掌握,然后应用。除非面试的是facebook、google这样的公司 (2)多问、多思考、多互动 (3)打怪升级法
我们在枯燥的学习过程中,可以给自己设定一个切实可行的目标。 (4)知识沉淀 学习知识的过程就是反复迭代、不断沉淀的过程。
Gist code
To use, see:Jektify - Doc
-
Música
Jekyll plugin to generate html snippets for embedding Spotify Musics. To listen to the full song, open your Spotify and start these musics.
Goodbye!
The word of the day!
Put a very powerful message.