LeetCode学习笔记
1 刷题前准备知识
1.1 数据结构
数组,链表,栈,队列,树,图,堆,HashTable,线段树,树状数组,并查集,字典树等
1.2 算法
排序算法(八种),DFS,BFS,二分查找,回溯,分治,递归,动态规划,拓扑排序,贪心等算法(学校学不到的):Sliding window,扫描线算法(图形学),蓄水池算法,flood fill(图形学)等
更难的其实也涉及到很多:KMP,马拉车等
1.3 其他知识
位运算(Bit),基础数据结构实现(LinkedList Deque等实现),一些设计思想(Design),数学知识(Math),通配符,转义字符,记忆化搜索等。
如果用的是Java,其实别的语言也一样,Java 还有一些常用的数据结构:TreeMap,TreeSet,PriorityQueue,Deque 等
Dijkstra,二分图,红黑树知识等;Java的基础:Heap实现,HashMap,HashSet具体区别等,equals hashcode重写等
2 刷题方法
2.1 固定时间(每天坚持!!!!)
找出一个一天之内一定有时间的时间段
2.2 按照Topics刷题
例如链表、数组、动态规划等
2.3 写不出来就看答案
当你确定没有思路的时候,大胆的去看答案,只要能看懂答案,日后再回顾就ok。很多时候,有些题目不会,不是因为自身问题,而是有些题目就是有特定的套路(前面也提到,有很多这样的算法),一看就懂了,没必要在这些题目上投入过多时间。
直接看答案的前提是经常回顾,看看之前的题目是否还有思路。
写题觉得思路比较复杂的时候,不妨拿纸笔多比划看看。
2.4 不断降低时间空间复杂度
很多题都有很多不同的解法,尽可能找到每道题的最优解,如果一时没有想通,不妨mark之后下次再来回顾。
面试官在面试的时候也会逐步引导你选择最优的算法,以及特定场景最适合的算法。
2.5 在线编写,不要使用ide
直接编写更能锻炼能力,一部分是编码的能力,另一部分是代码风格,良好的代码风格会让人更愿意共事。例如,如果你习惯使用Java,可以参考阿里的 编码规范,其他亦然。
3 开始刷题
主刷前400
Leetcode 分类顺序表
3.1 第一遍——从看答案开始
第一遍刷题的时候,看答案,看最优解,理解所有的算法、原理、套路,建立一个较为完整的刷题思维体系。
以题带练,带补,学习人家的最优解,建立思维体系,补数据结构,补算法知识。
3.2 第二遍——自己想
尝试自己先写,加深印象,再看答案
3.3 第三遍——巩固
再过一下,熟练所有套路,需要牢牢记住所有算法思想。
3.4 第四遍——做面试题
需要脱离lc,看看公司面试是怎么出题的。
本文地址:https://blog.csdn.net/Karen_Cassiopeia/article/details/111833677
下一篇: 傲游浏览器命令执行漏洞介绍以及修复方案