题目列表
可按标题、OJ、标签和启发记录快速筛选题目解析。
| OJ | 题号 | 标题 | 标签 | 难度 | 最后更新 | 解析 |
|---|---|---|---|---|---|---|
best-time-to-buy-and-sell-stock | 扫描时只用此前最低价计算今天卖出的收益,取最大值。 | 普及- | 2026-07-29 15:20 | |||
find-median-from-data-stream | 两个堆维护数据流:大顶堆存较小半,小顶堆存较大半,堆顶即为中位数候选。 | 提高+/省选- | 2026-07-29 15:20 | |||
top-k-frequent-elements | 统计频次后排序取前 k,或用大小为 k 的最小堆保留频次最高的 k 个。 | 普及+/提高- | 2026-07-29 15:20 | |||
kth-largest-element-in-an-array | 维护大小为 k 的最小堆,堆顶即为第 k 大元素。 | 普及+/提高- | 2026-07-29 15:20 | |||
daily-temperatures | 单调栈保存尚未遇到更高温度的下标,弹出时计算距离即为等待天数。 | 普及+/提高- | 2026-07-29 15:20 | |||
decode-string | 遇到 [ 时保存当前字符串和次数到栈,遇到 ] 时弹出并拼接重复结果,处理嵌套编码。 | 普及+/提高- | 2026-07-29 15:20 | |||
min-stack | 每个元素同时保存当前值和截至该层的最小值,getMin 直接读栈顶的 min 字段。 | 普及- | 2026-07-29 15:20 | |||
valid-parentheses | 栈匹配:左括号入栈,右括号必须与栈顶严格配对,最终栈空则合法。 | 入门 | 2026-07-29 15:20 | |||
median-of-two-sorted-arrays | 在较短数组上二分分割线,满足左半最大 ≤ 右半最小,由四个边界值计算中位数。 | 提高+/省选- | 2026-07-29 15:20 | |||
find-minimum-in-rotated-sorted-array | 比较中点与右端点,保留最小值所在闭区间,最终 l 指向最小元素。 | 普及+/提高- | 2026-07-29 15:20 | |||
search-in-rotated-sorted-array | 每轮二分判断哪一半有序,再判断 target 是否落在该半区,缩小搜索范围。 | 普及+/提高- | 2026-07-29 15:20 | |||
search-a-2d-matrix | 把二维下标映射到一维有序序列,一次二分查找 target。 | 普及- | 2026-07-29 15:20 | |||
add-two-numbers | 同步遍历两链表和进位,节点值写 sum % 10,末尾保留 carry。 | 普及+/提高- | 2026-07-29 15:20 | |||
binary-tree-inorder-traversal | 左根右;递归或显式栈模拟递归。 | 入门 | 2026-07-29 15:20 | |||
copy-list-with-random-pointer | 哈希表映射旧节点到新节点,第二遍补 next/random 引用。 | 普及+/提高- | 2026-07-29 15:20 | |||
diameter-of-binary-tree | 后序返回高度,经过当前点的候选为 left+right,全局取最大。 | 入门 | 2026-07-29 15:20 | |||
first-missing-positive | 把值 x 放到下标 x-1,最后第一个 a[i] != i+1 即答案,O(n) 时间 O(1) 空间。 | 提高+/省选- | 2026-07-29 15:20 | |||
intersection-of-two-linked-lists | 双指针分别走 A+B 和 B+A,长度差被抵消后在交点或 nullptr 相遇。 | 入门 | 2026-07-29 15:20 | |||
invert-binary-tree | 后序/前序递归交换左右子树。 | 入门 | 2026-07-29 15:20 | |||
linked-list-cycle-ii | Floyd 判环后,从头和相遇点各走一步,第二次相遇即入环点。 | 普及+/提高- | 2026-07-29 15:20 | |||
linked-list-cycle | Floyd 快慢指针,slow 走一步 fast 走两步,相遇则有环。 | 入门 | 2026-07-29 15:20 | |||
lru-cache | 哈希表 O(1) 找节点,双向链表按最近使用顺序维护,头为新、尾为旧。 | 普及+/提高- | 2026-07-29 15:20 | |||
maximum-depth-of-binary-tree | 1 + max(left, right) 递归。 | 入门 | 2026-07-29 15:20 | |||
maximum-subarray | Kadane 算法:以 i 结尾的最大和 = max(a[i], dp[i-1] + a[i]),滚动 O(1) 空间。 | 普及+/提高- | 2026-07-29 15:20 | |||
merge-intervals | 按左端点排序,遍历时维护当前合并区间,相交则扩右端,否则输出并重开。 | 普及+/提高- | 2026-07-29 15:20 | |||
merge-k-sorted-lists | 小根堆维护每条链当前头节点,每次弹出后推进,O(N log K)。 | 提高+/省选- | 2026-07-29 15:20 | |||
merge-two-sorted-lists | dummy 头结点,每次接入较小节点,最后接剩余链。 | 入门 | 2026-07-29 15:20 | |||
palindrome-linked-list | 快慢指针找中点,反转后半段,与前半段比较,O(n) O(1)。 | 入门 | 2026-07-29 15:20 | |||
product-of-array-except-self | 结果先存左侧前缀积,再乘右侧后缀积,O(n) 时间 O(1) 额外空间。 | 普及+/提高- | 2026-07-29 15:20 | |||
remove-nth-node-from-end-of-list | dummy + 快慢指针相距 n+1,快指针到尾时慢指针在待删节点前一位。 | 普及+/提高- | 2026-07-29 15:20 | |||
reverse-linked-list | prev/cur/next 三指针逐节点反转,同时保留后续节点引用。 | 入门 | 2026-07-29 15:20 | |||
reverse-nodes-in-k-group | 先找第 k 个节点,翻转这一段并接回;不足 k 段保持原样。 | 提高+/省选- | 2026-07-29 15:20 | |||
rotate-array | 三次反转:整体反转,再分别反转前 k 和后 n-k;先取 k %= n。 | 普及+/提高- | 2026-07-29 15:20 | |||
rotate-image | 先沿主对角线转置,再逐行反转;原地旋转 90 度顺时针,O(n²) O(1)。 | 普及+/提高- | 2026-07-29 15:20 | |||
search-a-2d-matrix-ii | 从右上角出发,小于 target 向下,大于 target 向左,每步排除一行或一列,O(m+n)。 | 普及+/提高- | 2026-07-29 15:20 | |||
set-matrix-zeroes | 用首行/首列充当标记位,先记录首行首列是否含零,再标记并回填,O(1) 额外空间。 | 普及+/提高- | 2026-07-29 15:20 | |||
sort-list | 快慢指针拆半,递归归并排序,O(n log n) 时间 O(log n) 递归空间。 | 普及+/提高- | 2026-07-29 15:20 | |||
spiral-matrix | 维护 top/bottom/left/right 四条边,按右/下/左/上收缩并检查边界,避免单行/单列重复。 | 普及+/提高- | 2026-07-29 15:20 | |||
swap-nodes-in-pairs | dummy + prev/a/b/next 四指针每轮重连已交换段和待处理段。 | 普及+/提高- | 2026-07-29 15:20 | |||
symmetric-tree | 定义 mirror(a,b):值相等且 a.left 对 b.right、a.right 对 b.left。 | 入门 | 2026-07-29 15:20 |