说明(个人见解):
一、标注说明
标注手撕:必须掌握,熟练写出 code;
标注星号:星号越多越重要;
标注加分:一般此类都是算法不容易实现,但是需要掌握思想,面试加分。
二、刷题顺序
1、了解基本的数据结构与算法的知识:
- 常用的数据结构:数组、链表、栈、队列、哈希表、树、图等的基本概念和实现;
- 常用的算法:DFS / BFS、最短路径算法(Dijkstra)、贪心算法、动态规划、蓄水池算法、Manacher 算法等;
- 常用的编程技巧:递归:递归非常重要,要认真理解递归的过程;
2、《剑指Offer》:
《剑指Offer》非常重要,可以看各大公司的面经,很多手撕代码都出自于《剑指Offer》,所以多刷几遍,每一题都务必能快速的手写出来。
3、LeetCode:
《剑指Offer》刷完了,可以先刷 LeetCode 的 Top100,当然你也可以根据自身的情况,刷自己薄弱的专题。大部分公司的笔试题都是出自于 LeetCode,原题或者改编,重要性就不用多说了;
4、左神算法班:
这个因人而异了,如果你对算法题比较敏感,这个阶段是可以跳过的。但是如果对算法不是很有信心或者准备的比较晚,还是比较推荐左神的算法班,分为初级和高级,会串讲基本的数据结构和对应的题目。
5、最后:
算法的重要性:得算法者得 Offer。大公司非常看重算法,即便内推,但是面试环节几乎都会手撕代码,如果这个环节出了问题,会大打折扣。