LeetCode学习
一、题目类型
主要算法:
- 基础技巧:分治、二分、贪心;
- 排序算法:快速排序、归并排序、技术排序;
- 搜索算法:回溯、递归、深度优先遍历、广度优先遍历、二叉搜索树等;
- 图论:最短路径、最小生成树;
- 动态规划:背包问题、最长子序列
数据结构:
- 数组和链表:单/双向链表
- 栈与队列
- 哈希表
- 堆:最大堆/最小堆
- 树与图:最近公共优先、并查集
- 字符串:前缀树(字典树)/后缀树 (图片来自leetcode)
二、总结并记忆推荐使用anki,是一个使记忆变得容易的学习软件,用它来安排复习时间
三、刷题建议
- 方法1:第一遍按tag刷,第二遍一题多解,多题同解
- 方法2:如果是为了找工作二刷题:先刷热题 HOT 100,再刷精选 TOP 面试题
- 方法3:如果时间足够: (1)按从低到高的难度分组刷 (2)按 tag 分类刷 (3)定期复习,重做之前刷过的题
四、刷题方法
- 第一遍:可以先思考,之后看参考答案刷,结合其他人的题解刷。思考、总结并掌握本题的类型,思考方式,最优题解。
- 第二遍:先思考,回忆最优解法,并与之前自己写过的解答作比对,总结问题和方法。
- 提升刷题速度,拿出一个题,就能够知道其考察重点,解题方法,在短时间内写出解答。
五、GitGub
- 使用动画来呈现解LeetCode题目的思路:github.com/MisterBooo/…
- lucifer小哥哥:github.com/azl39798585…