- 本项目题目来源:力扣(LeetCode),少部分来源acwing。
- 题解来源于讨论区和个人理解后手打,仅用于个人复习和朋友间讨论。
- 题目著作权归力扣(LeetCode) 和acwing所有。商业转载请联系官方授权,非商业转载请注明出处。
每题需要刷五遍,最后两遍用来复习。刷两遍+笔记+复习两遍。
- 解题:看懂题目,尝试自己做,推导解法。
- 总结:看最优解,重新写一遍,并总结通用思路和关键的易错点。尝试用费曼学习法或者写笔记的方式输出。
- 复习:根据笔记思路转换为代码,手写或重打。
- 从薄到厚。先用薄教材入门,再找“厚”教材,细细体会其中的细节。
- 从厚到薄。做好笔记,寻求最优解。把300题刷两遍,比把600题刷一遍好。
- debug 是最重要的能力。(通常在一个领域里,你最不喜欢做的事情,就是这个领域的核心竞争力:)
- 量变到质变。大多数问题,其实都是需要“回头看”的。
-
随着你对一个领域理解的越深入,回头再去看那些曾经的问题,都会产生新的视角,对于很多曾经想不明白的问题也豁然开朗。 这也是“进步”的根源。如果卡在一个问题上不前进,不给自己“回头看”的机会,甚至最后是放弃了,就什么也没有学会了。
- 持续地分特定类别刷题,可以带来事半功倍的效果。在能力已经比较强的时候,可以采用打散的方式来刷题,可以更好地锻炼思维的灵活性和应变能力。
- 解题三部曲:
-
一、 读题 拿到一个题目后,看5分钟,如果5分钟之内看不懂,就mark 下来,留到后面再做,要不很影响刷题的心情。 二、 分析,推导解法 这个步骤要有意识地单独拎出来,不要去想任何实现相关地事情,这样做可以极大地降低心智负担,高效地想出题目的解法。 算法的封装可以让自己的脑力发挥在问题的核心点。 三、 转换为代码 怎么定义变量,保存状态,用递归,还是用循环加辅助数据结构等等,都是将思路转换成代码要做的事情。这个能力也需要刻意地去练习。
- 算法能力的提升,是一个长期的事情,需要持续地学习和做题。特别关注刷题时的正反馈。注意不要死磕!算法学习,特别讲求方法和技巧,死磕非但磕不过去,还可能留下对算法的心里阴影,导致学习障碍。