第一章 核心套路
1.2 动态规划框架
1.斐波那契数列: 509. 斐波那契数
2.凑零钱: 322. 零钱兑换
1.3 回溯算法框架
1.4 BFS算法框架
1.二叉树最小高度:111. 二叉树的最小深度
2.打开密码锁:752. 打开转盘锁
1.5 双指针技巧框架
快慢指针:常用于链表
1.链表是否有环:141. 环形链表
2.环的起始位置:142. 环形链表 II
3.寻找无环单链表的中点:用于对链表进行归并排序
4. 剑指 Offer 22. 链表中倒数第k个节点
左右指针:常用于数组问题
1.二分查找: 704. 二分查找
2.两数之和(数组升序):167. 两数之和 II - 输入有序数组
3.反转数组
4.滑动窗口
1.6 二分查找框架
1.基本的二分查找
2.寻找左侧边界和右侧边界的二分搜索:34. 在排序数组中查找元素的第一个和最后一个位置
1.7 滑动窗口框架
1.最小覆盖子串:76. 最小覆盖子串
2.字符串排列:567. 字符串的排列
3.找到所有字母的异位词:438. 找到字符串中所有字母异位词
4.无重复字符的最长子串: 3. 无重复字符的最长子串
第二章 动态规划
1.最长递增子序列:300. 最长递增子序列
2.二维递增子序列:信封嵌套问题 354. 俄罗斯套娃信封问题
3.最大子数组:53. 最大子序和
4.最长公共子序列:1143. 最长公共子序列
5.编辑距离: 72. 编辑距离
6.最长回文子序列:516. 最长回文子序列
7.最小插入次数构造回文串:1312. 让字符串成为回文串的最少插入次数
8.正则表达式匹配: 10. 正则表达式匹配
9.高楼扔鸡蛋:887. 鸡蛋掉落
10.戳气球:312. 戳气球
11.0-1背包:
12.子集背包:416. 分割等和子集
13.完全背包:518. 零钱兑换 II
14.打家劫舍一:198. 打家劫舍
15.打家劫舍二:213. 打家劫舍 II
16.打家劫舍三:337. 打家劫舍 III
17.目标和:494. 目标和
第三章 数据结构
1.手写LRU: 146. LRU 缓存机制
2.手写LFU:460. LFU 缓存
3.判断二叉树是否相同:100. 相同的树
4.判断二叉搜索时的合法性:98. 验证二叉搜索树
5.在BST中查找一个数是否存在:700. 二叉搜索树中的搜索
6.在BST中插入一个数:701. 二叉搜索树中的插入操作
7.在BST删除一个数:450. 删除二叉搜索树中的节点
8.完全二叉树的节点数: 222. 完全二叉树的节点个数
9.二叉树的序列化和反序列化:297. 二叉树的序列化与反序列化
10.二叉树最近公共祖先: 236. 二叉树的最近公共祖先
11.下一个更大元素: 496. 下一个更大元素 I
12.更高的温度: 739. 每日温度
13.循环数组:原是数组翻倍,再接一个原数组
14.滑动窗口最大值:239. 滑动窗口最大值
15.判断回文链表:234. 回文链表
16.反转整个链表:206. 反转链表
17.反转前N个节点:记录N=1时的前驱节点,翻转后,head.next = successor
18.反转m-n的节点:92. 反转链表 II
19.K个一组翻转链表:#### 25. K 个一组翻转链表
第四章 算法思维系列
4.1 回溯算法解决子集、组合、排列问题
1.求子集: 78. 子集
2.求组合: 77. 组合
3.求排列: 46. 全排列
4.解数独: 37. 解数独
5.括号生成:22. 括号生成
6.滑动题:773. 滑动谜题
7.2Sum系列问题:
①1. 两数之和 map
②167. 两数之和 II - 输入有序数组 双指针
③653. 两数之和 IV - 输入 BST 中序遍历保存到数组,或者直接利用HashSet。
8.三数之和:15. 三数之和
9.四数之和:18. 四数之和
10.计算器(栈+)https://leetcode-cn.com/problems/basic-calculator/comments/847367
(栈+递归)https://leetcode-cn.com/problems/basic-calculator/comments/847367
224. 基本计算器
227. 基本计算器 II
- 煎饼排序:969. 煎饼排序
- 前缀和解决子数组问: 560. 和为K的子数组
- 扁平化嵌套列表: 341. 扁平化嵌套列表迭代器
高频面试系列
- 如何高效寻找素数: 204. 计数质数
- 如何高效进行模幂运算: 372. 超级次方
- 如何运用二分搜索
875. 爱吃香蕉的珂珂
1011. 在 D 天内送达包裹的能力 - 如何高效解决接雨水问题:42. 接雨水
- 如何去除有序数组的重复元素: 26. 删除有序数组中的重复项
- 最长回文子串:5. 最长回文子串
- 如何用贪心思想玩跳跃游戏:
55. 跳跃游戏
45. 跳跃游戏 II - 如何用贪心算法做时间管理:
435. 无重叠区间
452. 用最少数量的箭引爆气球 - 如何判断括号合法性: 20. 有效的括号
- 如何调度考生座位
- Union-Find算法详解及应用
- 一行代码就能解决的算法题
292. Nim 游戏