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,看看公司面试是怎么出题的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值