题目列表
可按标题、OJ、标签和启发记录快速筛选题目解析。
| OJ | 题号 | 标题 | 标签 | 难度 | 最后更新 | 解析 |
|---|---|---|---|---|---|---|
largest-rectangle-in-histogram | 单调栈弹出时左右第一个更矮位置决定宽度,高度乘宽度即为面积,末尾补 0 清算剩余。 | 提高+/省选- | 2026-10-07 12:15 | |||
word-search | DFS 搜索路径,进入格子后标记已访问防止复用,递归后恢复现场,四方向扩展匹配下一个字符。 | 普及+/提高- | 2026-10-07 12:15 | |||
minimum-window-substring | 滑动窗口维护 need/have 计数,右端扩张满足需求,左端收缩到刚好不满足,O(n)。 | 提高+/省选- | 2026-10-07 12:15 | |||
trapping-rain-water | 双指针维护左右最高柱,较矮侧水量可立即确定,O(n) 时间 O(1) 空间。 | 提高+/省选- | 2026-10-07 12:15 | |||
search-insert-position | 二分查找 lower_bound,返回第一个 ≥ target 的位置,即插入位置。 | 普及- | 2026-10-07 10:45 | |||
n-queens | 逐行放置皇后,用三个数组(列、主对角线、副对角线)检测冲突,回溯搜索所有合法方案。 | 普及+/提高- | 2026-10-07 10:45 | |||
palindrome-partitioning | 回溯枚举每段终点,只递归回文前缀,预处理区间回文表加速判断。 | 普及+/提高- | 2026-10-07 10:45 | |||
generate-parentheses | 回溯生成括号组合,open < n 放左括号,close < open 放右括号,保证前缀合法。 | 普及+/提高- | 2026-10-07 10:45 | |||
combination-sum | 回溯枚举每个候选数选或不选、选几次,允许重复使用当前数后再推进到下一个候选数。 | 普及+/提高- | 2026-10-07 10:45 | |||
letter-combinations-of-a-phone-number | 回溯枚举每个数字对应的字母选择,递归层数对应数字位置,每层分支数由按键映射决定。 | 普及 | 2026-10-07 10:45 | |||
find-first-and-last-position-of-element-in-sorted-array | 两次二分分别找 target 的 lower_bound 与 upper_bound-1,组合得到起止位置。 | 普及+/提高- | 2026-10-07 10:45 | |||
find-all-anagrams-in-a-string | 固定长度滑动窗口维护 26 维字母计数,窗口进出各一次,O(n)。 | 普及+/提高- | 2026-10-07 10:45 | |||
longest-substring-without-repeating-characters | 滑动窗口记录字符上次出现位置,左指针直接跳到重复字符后,O(n)。 | 普及+/提高- | 2026-10-07 10:45 | |||
sliding-window-maximum | 单调递减队列保存候选下标,过期从队首删,较小候选从队尾删,O(n)。 | 提高+/省选- | 2026-10-07 10:45 | |||
subarray-sum-equals-k | 前缀和 + 哈希表统计历史前缀出现次数,边扫边累计答案,O(n)。 | 普及+/提高- | 2026-10-07 10:45 | |||
3sum | 排序后固定第一个数,剩余区间用双指针,跳过相同值去重,O(n²)。 | 普及+/提高- | 2026-10-07 10:45 | |||
container-with-most-water | 双指针维护区间,面积由短板决定,每次移动较矮一侧,O(n)。 | 普及+/提高- | 2026-10-07 10:45 | |||
move-zeroes | 双指针:write 指针收集非零元素,剩余补零,保持非零相对顺序。 | 入门 | 2026-10-07 10:45 | |||
longest-consecutive-sequence | 放入集合,只从 x-1 不存在的起点向后扩展,每个数至多被访问一次,均摊 O(n)。 | 普及+/提高- | 2026-10-07 10:45 | |||
group-anagrams | 为每个单词构造 26 字母计数 key,哈希到同一组;异位词一定有相同的字母构成。 | 普及+/提高- | 2026-10-07 10:45 | |||
two-sum | 遍历数组时用哈希表保存值到下标的映射,在线查找当前数所需的补数。 | 入门 | 2026-10-07 10:45 | |||
perfect-squares | 完全背包 DP:dp[i] 从所有不超过 i 的平方数转移,取最小值。 | 普及 | 2026-10-03 12:38 | |||
binary-tree-level-order-traversal | BFS 队列按当前层长度分组输出。 | 普及+/提高- | 2026-07-29 15:20 | |||
binary-tree-maximum-path-sum | 递归返回向下最大贡献 max(0,child),经过点的两侧贡献更新全局答案。 | 提高+/省选- | 2026-07-29 15:20 | |||
binary-tree-right-side-view | BFS 每层最后一个,或 DFS 先右后左首次到达深度时记录。 | 普及+/提高- | 2026-07-29 15:20 | |||
construct-binary-tree-from-preorder-and-inorder-traversal | 前序首元素是根,用哈希表定位中序分界,递归构造区间。 | 普及+/提高- | 2026-07-29 15:20 | |||
convert-sorted-array-to-binary-search-tree | 取中点为根,递归构造左右半段,天然平衡。 | 入门 | 2026-07-29 15:20 | |||
course-schedule | 建图 + Kahn 队列删入度为零节点,处理完全部节点即无环。 | 普及+/提高- | 2026-07-29 15:20 | |||
flatten-binary-tree-to-linked-list | 反向 preorder 递归原地接 prev,所有 left 置空。 | 普及+/提高- | 2026-07-29 15:20 | |||
implement-trie-prefix-tree | 每个字符沿 next[26] 走,节点维护终点标记。 | 普及+/提高- | 2026-07-29 15:20 | |||
kth-smallest-element-in-a-bst | BST 中序有序,迭代栈访问到第 k 个就停止。 | 普及+/提高- | 2026-07-29 15:20 | |||
lowest-common-ancestor-of-a-binary-tree | 后序返回是否找到 p/q;左右均找到则当前为 LCA。 | 普及+/提高- | 2026-07-29 15:20 | |||
number-of-islands | 遇到未访问陆地就 DFS 淹没整块,计数加一。 | 普及+/提高- | 2026-07-29 15:20 | |||
path-sum-iii | DFS 维护根到当前的前缀和,查 prefix - target 次数,回溯撤销。 | 普及+/提高- | 2026-07-29 15:20 | |||
permutations | 每层选择未使用元素,swap 写法不重不漏。 | 普及+/提高- | 2026-07-29 15:20 | |||
rotting-oranges | 所有腐烂橘子同时入队,多源 BFS 按层传播,统计分钟。 | 普及+/提高- | 2026-07-29 15:20 | |||
subsets | 每个元素选/不选的 DFS,或枚举二进制 mask。 | 普及+/提高- | 2026-07-29 15:20 | |||
validate-binary-search-tree | 递归传 (low, high) 开区间,中序遍历必须严格递增。 | 普及+/提高- | 2026-07-29 15:20 | |||
find-the-duplicate-number | 把值视为 next 指针,Floyd 找环入口即为重复数。 | 提高+/省选- | 2026-07-29 15:20 | |||
next-permutation | 从右找下降点,找最小更大后继交换,反转后缀。 | 普及+/提高- | 2026-07-29 15:20 | |||
sort-colors | 三指针荷兰国旗:p0 指向 0 的右界,p2 指向 2 的左界,扫描指针交换后分类推进。 | 普及+/提高- | 2026-07-29 15:20 | |||
majority-element | Boyer-Moore 投票:计数器抵消非多数元素,最终留下的候选即为多数。 | 普及- | 2026-07-29 15:20 | |||
single-number | 异或所有元素,成对元素异或为 0,最终结果即为只出现一次的数。 | 入门 | 2026-07-29 15:20 | |||
edit-distance | 二维 DP:插入、删除、替换分别对应三个相邻状态转移,取最小值。 | 提高+/省选- | 2026-07-29 15:20 | |||
longest-common-subsequence | 二维 DP:字符相等时 dp[i][j]=dp[i-1][j-1]+1,不等时取 max(dp[i-1][j], dp[i][j-1])。 | 普及+/提高- | 2026-07-29 15:20 | |||
longest-palindromic-substring | 中心扩展:枚举每个中心(奇偶),向两侧扩展直到不回文,记录最长。 | 普及+/提高- | 2026-07-29 15:20 | |||
minimum-path-sum | 网格 DP:边界只能来自单方向,内部取上左较小值加上当前格。 | 普及- | 2026-07-29 15:20 | |||
unique-paths | 网格 DP:首行首列初始化为 1,内部 dp[j] += dp[j-1] 即上方加左方。 | 普及- | 2026-07-29 15:20 | |||
longest-valid-parentheses | 栈保存未匹配位置,弹出后用栈顶计算有效长度,栈空时压入当前右括号作为新边界。 | 提高+/省选- | 2026-07-29 15:20 | |||
partition-equal-subset-sum | 0/1 背包判断能否凑满 sum/2,倒序更新避免重复使用元素。 | 普及+/提高- | 2026-07-29 15:20 | |||
maximum-product-subarray | 同时维护以当前位置结尾的最大和最小乘积,负数交换两者,取全局最大。 | 普及+/提高- | 2026-07-29 15:20 | |||
longest-increasing-subsequence | 贪心+二分:tails 数组维护各长度子序列的最小结尾,lower_bound 更新保证严格递增。 | 普及+/提高- | 2026-07-29 15:20 | |||
word-break | dp[i] 表示前 i 个字符是否可拆分,枚举断点 j,若 dp[j] 且 s[j:i] 在字典中则 dp[i]=true。 | 普及+/提高- | 2026-07-29 15:20 | |||
coin-change | 完全背包 DP:dp[i] 从所有硬币面额转移,取最小值,不可达用哨兵标记。 | 普及+/提高- | 2026-07-29 15:20 | |||
house-robber | dp[i] 表示处理到第 i 间时的最大金额,偷当前则跳过前一间,不偷则继承前一间。 | 普及- | 2026-07-29 15:20 | |||
pascals-triangle | 边界恒为 1,内部由上一行相邻两数相加,逐行递推生成。 | 入门 | 2026-07-29 15:20 | |||
climbing-stairs | Fibonacci 型递推:dp[i] = dp[i-1] + dp[i-2],初值 dp[1]=1, dp[2]=2。 | 入门 | 2026-07-29 15:20 | |||
partition-labels | 预处理每个字母最后出现位置,扫描时扩展当前段边界至段内所有字母最远末次位置,到达时切分。 | 普及+/提高- | 2026-07-29 15:20 | |||
jump-game-ii | BFS 层次遍历思想:当前层边界与下一层最远位置确定跳跃次数。 | 普及+/提高- | 2026-07-29 15:20 | |||
jump-game | 维护最远可达位置,扫描时不断扩展,若中途无法前进则不可达。 | 普及 | 2026-07-29 15:20 |