文章目录
- 代码随想录一刷总结
- 数组篇
- 二分查找
- 双指针用法
- 链表篇
- 哈希表篇
- 字符串篇
- 栈与队列篇
- 二叉树篇
- 回溯篇
- 贪心篇
- 动态规划篇
代码随想录一刷总结
数组篇
二分查找
最重要的是循环不变量原理
区间定义 left == right 时有没有意义,取决于开区间还是闭区间
使用场景:可以按照某一规则将数组分为左右两部分
双指针用法
-
双指针指向新旧数组中的元素,完成数组的变化
-
双向指针从两端向中间移动,如有序数组的平方
-
双指针维护一个滑动窗口,简化两重循环的原理是i和j都不用回退
-
快慢指针保持一个固定距离,一次循环找到倒数第k个元素
-
快慢指针速度不同,链表找环
链表篇
链表的模拟操作考验coding基本功,画图模拟,想清楚步骤123,注意先后顺序!
快慢指针两种用法见上文
哈希表篇
什么时候想到用哈希法,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。
当哈希表长度确定时,可以用数组模拟哈希表
需要去重时可以使用HashSet
需要索引时用HashMap
字符串篇
想要通过固定规律一段一段去处理字符串的时候,要在for循环的表达式上做文章
反转字符串很重要,拆分反转的思路
栈与队列篇
互相实现
特殊应用场景
单调栈/单调队列
二叉树篇
遍历顺序的考虑,是否根节点需要接收左右子树节点的结果
具体题目具体分析
回溯篇
回溯模板
分清问题类型
贪心篇
只能记
动态规划篇
dp数组的定义是关键
一刷以模板思路解题,二刷重新思考原理