用于记录数据结构与算法的笔记,以及 leetcode 算法题解。使用 issues 进行记录。
我个人比较喜欢使用 issue 记录一些知识点,因为 issue 的功能比较丰富,可以很方便的进行分类、修改、补充。
首先要明确的是,数据结构是工具,算法是通过合适的工具解决特定问题的方法。也就是说,学习算法之前,最起码得了解那些常用的数据结构,了解它们的特性和缺陷。
所以建议的刷题顺序是:
1、先学习像数组、链表这种基本数据结构的常用算法,比如单链表翻转,前缀和数组,二分搜索等。
因为这些算法属于会者不难,难者不会的类型,难度不大,学习它们不会花费太多时间。而且这些小而美的算法经常让你大呼精妙,能够有效培养你对算法的兴趣。
2、学会基础算法之后,不要急着上来就刷回溯算法、动态规划这类笔试常考题,而应该先刷二叉树,先刷二叉树,先刷二叉树,重要的事情说三遍。
要求:
- 只刷 easy 和 medium 和一部分 hard 题;
- 当对一类高频题能在 30 分钟内做完,对某一个特定的算法应用于特定题目特定细节的修改都有了自己的感悟,这一类题不再刷;
- 过一段时间(比如一个月)总结做过的题目,每一次都筛选出一部分看到就会做的题目,然后丢在一边永远不碰;对于不能马上给出答案的题,重新刷,直到看到后能马上给出答案;
- 注重细节。