Skip to content

Latest commit

 

History

History
96 lines (90 loc) · 11.2 KB

LeetCode 已 A 题目整理.md

File metadata and controls

96 lines (90 loc) · 11.2 KB
题目 TAG 备注
3. 无重复字符的最长子串 滑动窗口
5. 最长回文子串 ⭐️ DP
11. 盛最多水的容器 Two Pointers
22. 括号生成 ⭐️ Backtracking
23. 合并K个升序链表 ⭐️ 堆, 分治(归并排序) 注意归并排序的应用
25. K 个一组翻转链表 链表
34. 在排序数组中查找元素的第一个和最后一个位置 Binary Search 注意二分搜索的结束条件以及每次l和r的取值,为什么最后一定是在第一个和最后一个x上停下来?
37. 解数独 ⭐️ Backtracking
39. 组合总和 ⭐️ Backtracking 组合问题
40. 组合总和 II ⭐️ Backtracking 组合问题
42. 接雨水 ⭐️ Two Pointers, DP, Stack
46. 全排列 ⭐️ Backtracking 排列问题
47. 全排列 II ⭐️ Backtracking 排列问题
注意跳过重复排列的条件最后的 vis[i - 1]条件
51. N 皇后 Backtracking
53. 最大子序和 DP
60. 第k个排列 ⭐️ Backtracking, 数学
77. 组合 ⭐️ Backtracking 组合问题
78. 子集 ⭐️ Backtracking, 位运算 组合问题
79. 单词搜索 Backtracking
90. 子集 II Backtracking 组合问题
94. 二叉树的中序遍历 TREE 注意迭代的多种写法
100. 相同的树 TREE, DFS
107. 二叉树的层次遍历 II TREE, BFS 几乎所有层序遍历都是使用BFS的方法
110. 平衡二叉树 ⭐️ TREE, DFS 注意使用“自底向上 ”的递归避免重复计算
124. 二叉树中的最大路径和 ⭐️ TREE
144. 二叉树的前序遍历 TREE
145. 二叉树的后序遍历 TREE
146. LRU 缓存 双向链表 注意双向链表的插入和删除
leveldb 中有个生产级的 LRU 实现,可以参考
147. 链表插入排序 链表, 插入排序
148. 排序链表 链表, 归并排序 注意归并排序的写法
注意 “自顶向下” 和 “自底向上” 两种写法
152. 乘积最大子数组 ⭐️ DP 两个DP同时进行
198. 打家劫舍 DP
200. 岛屿数量 ⭐️ DFS, BFS, 并查集 岛屿问题
213. 打家劫舍 II DP
216. 组合总和 III DFS 组合问题
226. 翻转二叉树 TREE
239. 滑动窗口最大值 ⭐️ Sliding Window 滑动窗口问题
279. 完全平方数 ⭐️ DP, BFS
300. 最长上升子序列 ⭐️ DP, Binary Search 注意这里的二分搜索不是要找到特定元素,而是要找到元素的插入点,即如何找到最后一个小于该元素的位置
347. 前 K 个高频元素 ⭐️ Quick Select 第K大元素问题
378. 有序矩阵中第K小的元素** ⭐** 归并排序, Binary Search
  1. 注意多个数组归并的写法
  2. 二分搜索中返回的值为什么一定是在矩阵中存在的

ref 34 | | 380. 常数时间插入、删除和获取随机元素 | 设计, Map, Array | 可以通过把元素和数组在最后一个元素交换的方法来快速在Array中删除一个元素 | | 404. 左叶子之和 | TREE | | | 429. N叉树的层序遍历 | TREE, BFS | | | 589. N叉树的前序遍历 | TREE | | | 590. N叉树的后序遍历 | TREE | 如何转换成"前序遍历" | | 662. 二叉树最大宽度 | TREE, DFS, BFS | 注意两种写法,二叉树子节点的编号 | | 841. 钥匙和房间 | DFS, 图 | 如何把题目的描述转换成图的问题 | | 剑指 Offer 03. 数组中重复的数字 | | | | 剑指 Offer 04. 二维数组中的查找 | 双指针 | | | 剑指 Offer 07. 重建二叉树 | TREE, 分治 | 分治法的应用 | | 剑指 Offer 11. 旋转数组的最小数字 | Binary Search | | | 剑指 Offer 12. 矩阵中的路径 | DFS | | | 剑指 Offer 13. 机器人的运动范围 | DFS, BFS | | | 剑指 Offer 16. 数值的整数次方 ⭐️ | 递归 | 注意递归和非递归的写法 | | 剑指 Offer 19. 正则表达式匹配 ⭐️ | DP, DFS | | | 剑指 Offer 26. 树的子结构 | TREE | | | 剑指 Offer 27. 二叉树的镜像 ⭐️ | TREE | 递归和非递归写法 | | 剑指 Offer 28. 对称的二叉树 ⭐️ | TREE | | | 剑指 Offer 29. 顺时针打印矩阵 | ✅ | 注意边界条件 | | 剑指 Offer 33. 二叉搜索树的后序遍历序列 ⭐️ | 分治 | | | 剑指 Offer 34. 二叉树中和为某一值的路径 ⭐️ | TREE, DFS | | | 剑指 Offer 36. 二叉搜索树与双向链表 ⭐️ | TREE, 分治 | | | 剑指 Offer 37. 序列化二叉树 | | | | 剑指 Offer 38. 字符串的排列 | Backtracking | 排列问题 | | 剑指 Offer 40. 最小的k个数 | Quick Select | | | 剑指 Offer 41. 数据流中的中位数 | 堆 | | | 剑指 Offer 46. 把数字翻译成字符串 | DP, DFS | | | 剑指 Offer 47. 礼物的最大价值 ⭐️ | DP | | | 剑指 Offer 48. 最长不含重复字符的子字符串 | Two Pointers, Sliding Window | | | 剑指 Offer 49. 丑数 ⭐️ | DP | | | 剑指 Offer 51. 数组中的逆序对 ⭐️ | 分治 | 注意归并排序的写法 | | 剑指 Offer 52. 两个链表的第一个公共节点 | | 注意该题的一些变种 | | 剑指 Offer 54. 二叉搜索树的第k大节点 | TREE | 中序遍历 | | 剑指 Offer 55 - I. 二叉树的深度 | TREE, DFS, BFS | 注意DFS和BFS两种写法 | | 剑指 Offer 57 - II. 和为s的连续正数序列 | Two Pointers, Sliding Window | | | 剑指 Offer 59 - I. 滑动窗口的最大值 ⭐️ | Sliding Window | 滑动窗口问题 | | 剑指 Offer 59 - II. 队列的最大值 ⭐️ | Sliding Window | 滑动窗口问题 | | 剑指 Offer 60. n个骰子的点数 ⭐️ | DP, 递归 | | | 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 | TREE | | | 剑指 Offer 68 - II. 二叉树的最近公共祖先 | TREE | 注意递归写法 | | | | |