Since 2020.10.14
Since 2022.07.17
序号 | 算法 | 快速复习题 | 参考资料 | 典型例题 |
---|---|---|---|---|
1 | 字典树/前缀树 | 208. 实现 Trie (前缀树) | 692. 前K个高频单词 | |
2 | 堆 | 347. 前 K 个高频元素 | 数据结构-堆(heap)与堆的Python实现 | |
3 | 拓扑排序 | 207. 课程表 | 阿飞算法】图解310. 最小高度树(拓扑排序,多写法) | |
4 | 滑动窗口 | 1004. 最大连续1的个数 III | 分享滑动窗口模板,秒杀滑动窗口问题 | |
5 | 动态规划 | 10. 正则表达式匹配 72. 编辑距离 | 自底向上 和自顶向下 | 44. 通配符匹配 |
6 | 单调栈 | 84. 柱状图中最大的矩形 | 暴力解法、栈(单调栈、哨兵技巧) | 85. 最大矩形 |
7 | 树递归 | 剑指 Offer 07. 重建二叉树 669. 修剪二叉搜索树 | 树递归 | 297. 二叉树的序列化与反序列化 |
8 | DFS | 463. 岛屿的周长 | 图解:在 DFS 遍历过程中求周长(Java) | |
9 | 递归 | 21. 合并两个有序链表 | 一看就会,一写就废?详解递归 | |
10 | 回溯 | 22. 括号生成 | 括号生成 | |
11 | 并查集 | 547. 省份数量 | Python/C++/Java 多图详解并查集 |
-
1 *84. 柱状图中最大的矩形 -monotonic stack ref: - 暴力解法、栈(单调栈、哨兵技巧)
-
2 *85. 最大矩形 -monotonic stack -ref 详细通俗的思路分析,多解法
-
3 386. 字典序排数 -dfs - ref:【宫水三叶】一题双解 :「递归」&「迭代」
-
8 692. 前K个高频单词 -trie
- 1 675. 为高尔夫比赛砍树 -bfs - ref:【负雪明烛】图解算法:题意分析 + BFS 模板分享
-
4 1140. 石子游戏 II -dp+memory - ref: 记忆化搜索 Python3
-
5 1406. 石子游戏 III - dp
-
6 1510. 石子游戏 IV - dp
-
7 1563. 石子游戏 V -dp_out of time -opt_dp - ref: 石子游戏 V
-
8 1686. 石子游戏 VI -greedy -ref: [Python] 贪心
-
9 1690. 石子游戏 VII - dp
-
1 55. 跳跃游戏 - simulation - ref: 【跳跃游戏】别想那么多,就挨着跳吧
-
3 剑指 Offer 53 - I. 在排序数组中查找数字 I -二分查找 -*参考题解:面试题53 - I. 在排序数组中查找数字 I(二分法,清晰图解)
-
6 540. 有序数组中的单一元素 -异或法 -二分查找法
-
7 275. H 指数 II -二分法
-
11 162. 寻找峰值 - binary search
-
13 154. 寻找旋转排序数组中的最小值 II -binary search -ref 寻找旋转排序数组中的最小值 II(二分法,极简,图解)
-
2 238. 除自身以外数组的乘积 - left*right - ref: 乘积 = 当前数左边的乘积 * 当前数右边的乘积
-
1 547. 省份数量 - union_find
-
2 684. 冗余连接 - union find
-
3 695. 岛屿的最大面积 - dfs - union find
-
4 721. 账户合并 - union find
-
6 404. 左叶子之和 -dfs
-
7 面试题 04.04. 检查平衡性 - dfs
-
8 433. 最小基因变化 - bfs
-
9 463. 岛屿的周长 - dfs - ref:图解:在 DFS 遍历过程中求周长(Java)
-
1 q5最长回文子串 - 动态规划法 - 中心扩散法 参考:动态规划、中心扩散、Manacher 算法
-
2 q1143最长公共子序列 - 动态规划法 参考:视频图解 动态规划 最长公共子序列
-
6 q152乘积最大子数组 -动态规划法 参考:DP方法详解
-
8 q122买卖股票的最佳时机 II -动态规划法 参考: 暴力搜索、贪心算法、动态规划
-
11 q746使用最小花费爬楼梯 -动态规划法
-
20 q300最长上升子序列 -双循环 -DP
-
23 q132. 分割回文串 II -双动态规划法
-
25 467. 环绕字符串中唯一的子字符串 - dp - ref: 【西法带你学算法】一次搞定前缀和
-
26 699. 掉落的方块 -dp
-
27 518. 零钱兑换 II -dp
-
28 312. 戳气球 -memory dfs out of time -dp -ref:
-
29 213. 打家劫舍 II -dp
-
31 * 72. 编辑距离 - recusive solution -dp solution ref: -自底向上 和自顶向下 - 动态规划,自底向上
-
32 10. 正则表达式匹配 -dp - * ref:「手画图解」动态规划,需要仔细的分情况讨论
-
33 45. 跳跃游戏 II - dp
-
35 115. 不同的子序列 -dp
-
36 221. 最大正方形 - dp -ref: 理解 三者取最小+1
-
1 q39组合总和 -解法 -带起点的查找,避免重复解 -参考:97%速度,很简明的思路
-
2 q46全排列 -解法 -参考:回溯算法入门级详解 + 练习(持续更新)
-
4 *q40组合总和 II -解法
-
5 216. 组合总和 III -解法
-
8 q131. 分割回文串 -回溯法
-
10 q93. 复原 IP 地址 -回溯法
-
11 q17. 电话号码的字母组合 -回溯法
-
12 q784. 字母大小写全排列 -回溯法
-
3 剑指 Offer 57 - II. 和为s的连续正数序列 -暴力枚举法 -函数解析法 -滑动窗口法 - 参考题解和为s的连续正数序列
-
8 q567. 字符串的排列 -暴力法 -滑动窗口法
-
12 239. 滑动窗口最大值 -偷懒解法滑动窗口+sortedlist
-
13 978. 最长湍流子数组 -滑动窗口法
-
15 1052. 爱生气的书店老板 -滑动窗口法
-
17 395. 至少有 K 个重复字符的最长子串 -暴力法+Counter -滑动窗口超时 -滑动窗口法 -分治法 -参考题解:至少有K个重复字符的最长子串
-
18 *718. 最长重复子数组 -动态规划法 -滑动窗口法 -二分查找法
-
10 2055. 蜡烛之间的盘子 - 前缀和
-
11 128. 最长连续序列 - hash
-
3 q98验证二叉搜索树 -解法
-
2 q209长度最小的子数组 -双指针法
-
8 q845数组中的最长山脉 -双指针法
-
9 q15三数之和 -排序剪枝双指针法 参考:排序 + 双指针,逐行解释
-
10 q16最接近的三数之和 -双指针加排序
-
11 q259较小的三数之和 -双指针加排序
-
12 q713乘积小于K的子数组 -*优雅的双指针 -我的题解 参考:乘积小于K的子数组
-
13 q345反转字符串中的元音字母 -首尾双指针
-
14 q349两个数组的交集 -排序双指针
-
15 q922按奇偶排序数组 II -解法
-
16 q88 合并两个有序数组 -解法
-
17 q1099. 小于 K 的两数之和 -暴力枚举法 -双指针法 - 参考题解:图解「小于 K 的两数之和」
-
2 q861翻转矩阵后的得分 -贪心解法
-
1 q144二叉树的前序遍历 -解法
-
3 q104二叉树的最大深度 -递归法
-
4 q662二叉树最大宽度 -层次遍历
-
5 q102二叉树的层序遍历 -层次遍历
-
6 q145二叉树的后序遍历 -递归法
-
7 q94二叉树的中序遍历 -递归法
-
10 q103二叉树的锯齿形层次遍历 -BFS
-
11 q637二叉树的层平均值 -BFS
-
12 q111二叉树的最小深度 -递归法
-
13 q113路径总和II -递归法 -巧妙递归,不用复制路径
-
14 q437路径总和 III -丑陋解法 -巧妙递归
-
16 q814二叉树剪枝 -优雅的递归,mark
-
17 q543二叉树的直径 -递归
-
20 q617合并两个二叉树 -解法
-
21 q583. 两个字符串的删除操作 - dp
-
25 96. 不同的二叉搜索树 -hash
-
26 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 - 迭代 - 参考 面试题68 - I. 二叉搜索树的最近公共祖先(迭代 / 递归,清晰图解)
-
28 124. 二叉树中的最大路径和 - solution
-
33 669. 修剪二叉搜索树 - 递归
-
2 q1643第 K 条最小指令 -优先确定最高位 参考:*第 K 条最小指令
-
4 q1262可被三整除的最大和 -解法 -我的题解
-
5 q136只出现一次的数字 -排序法 -异或法
-
6 q448找到所有数组中消失的数字 -排序 -集合set -原地修改,秒 参考:找到所有数组中消失的数字
-
8 q204计数质数 -厄拉多塞筛法 -参考题解:计数质数(暴力法及优化、筛法及优化与思路详解)
-
9 q633 平方数之和 -解法 -参考题解:平方数之和
-
11 剑指 Offer 14- I. 剪绳子 -投机取巧归纳法 -参考:计算法
-
12 q191. 位1的个数 -位运算+O(n) - 位运算+O(logn) - 参考题解*【负雪明烛】详解位运算,附本题躲坑指南
-
14 292. Nim 游戏 -solution
-
17 1447. 最简分数 -solution
-
18 386. 字典序排数 -solution
-
1 q287寻找重复数 -题解 参考*前端灵魂画师🎨图解快慢指针
-
3 q142环形链表 II -快慢指针法
-
6 q876链表的中间结点 -快慢指针法
-
4 q146LRU缓存机制 -字典加链表
-
5 q21合并两个有序链表 -解法
-
6 q456 132模式 -暴力法 -单调栈
-
8 q856. 括号的分数 -丑陋的写法
-
9 q232. 用栈实现队列 -解法
-
10 q503. 下一个更大元素 II -单调栈法
-
11 q496. 下一个更大元素 I -单调栈法
-
14 q725. 分隔链表 - solution
-
15 q735. 行星碰撞 - 栈模拟
- 1 382. 链表随机节点 -蓄水池解法
-
1 q485最大连续1的个数 -解法
-
2 q1078Bigram分词 -解法
-
3 q1480一维数组的动态和 -解法
-
6 q1085最小元素各数位之和 -解法
-
7 q1207独一无二的出现次数 -解法
-
10 q551学生出勤记录I -解法
-
13 q659分割数组为连续子序列 -解法
-
15 q621任务调度器 -解法 -参考题解*:【任务调度器】C++ 桶子_配图理解
-
16 q49 字母异位词分组 -解法
-
17 q341. 扁平化嵌套列表迭代器 -初始化时dfs -next时dfs -参考题解:【负雪明烛】详解题意,梳理递归和迭代两种思路
-
19 q1706. 球会落何处 - solution
-
20 q838. 推多米诺 - solution