欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

LeetCode学习笔记

程序员文章站 2022-06-27 23:19:39
LeetCode学习笔记1 刷题前准备知识1.1 数据结构数组,链表,栈,队列,树,图,堆,HashTable,线段树,树状数组,并查集,字典树等1.2 算法排序算法(八种),DFS,BFS,二分查找,回溯,分治,递归,动态规划,拓扑排序,贪心等算法(学校学不到的):Sliding window,扫描线算法(图形学),蓄水池算法,flood fill(图形学)等更难的其实也涉及到很多:KMP,马拉车等1.3 其他知识位运算(Bit),基础数据结构实现(LinkedList Deque等实现)...

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