题目列表

可按标题、OJ、标签和启发记录快速筛选题目解析。

共 2161 题
标题OJ题号标签难度最后更新原题
dummy 头结点,每次接入较小节点,最后接剩余链。
leetcodecnmerge-two-sorted-lists
链表递归cpppython
入门2026-07-28 22:05打开
滑动窗口维护 need/have 计数,右端扩张满足需求,左端收缩到刚好不满足,O(n)。
leetcodecnminimum-window-substring
哈希表字符串滑动窗口cpppython
提高+/省选-2026-07-28 22:05打开
快慢指针找中点,反转后半段,与前半段比较,O(n) O(1)。
leetcodecnpalindrome-linked-list
链表双指针cpppython
入门2026-07-28 22:05打开
结果先存左侧前缀积,再乘右侧后缀积,O(n) 时间 O(1) 额外空间。
leetcodecnproduct-of-array-except-self
数组前缀和cpppython
普及+/提高2026-07-28 22:05打开
dummy + 快慢指针相距 n+1,快指针到尾时慢指针在待删节点前一位。
leetcodecnremove-nth-node-from-end-of-list
链表双指针cpppython
普及+/提高2026-07-28 22:05打开
prev/cur/next 三指针逐节点反转,同时保留后续节点引用。
leetcodecnreverse-linked-list
链表递归cpppython
入门2026-07-28 22:05打开
先找第 k 个节点,翻转这一段并接回;不足 k 段保持原样。
leetcodecnreverse-nodes-in-k-group
链表递归cpppython
提高+/省选-2026-07-28 22:05打开
三次反转:整体反转,再分别反转前 k 和后 n-k;先取 k %= n。
leetcodecnrotate-array
数组数学双指针cpppython
普及+/提高2026-07-28 22:05打开
先沿主对角线转置,再逐行反转;原地旋转 90 度顺时针,O(n²) O(1)。
leetcodecnrotate-image
数组矩阵cpppython
普及+/提高2026-07-28 22:05打开
从右上角出发,小于 target 向下,大于 target 向左,每步排除一行或一列,O(m+n)。
leetcodecnsearch-a-2d-matrix-ii
数组二分查找分治矩阵cpppython
普及+/提高2026-07-28 22:05打开
用首行/首列充当标记位,先记录首行首列是否含零,再标记并回填,O(1) 额外空间。
leetcodecnset-matrix-zeroes
数组矩阵cpppython
普及+/提高2026-07-28 22:05打开
单调递减队列保存候选下标,过期从队首删,较小候选从队尾删,O(n)。
leetcodecnsliding-window-maximum
队列单调队列滑动窗口数组cpppython
提高+/省选-2026-07-28 22:05打开
快慢指针拆半,递归归并排序,O(n log n) 时间 O(log n) 递归空间。
leetcodecnsort-list
链表排序归并排序cpppython
普及+/提高2026-07-28 22:05打开
维护 top/bottom/left/right 四条边,按右/下/左/上收缩并检查边界,避免单行/单列重复。
leetcodecnspiral-matrix
数组矩阵模拟cpppython
普及+/提高2026-07-28 22:05打开
前缀和 + 哈希表统计历史前缀出现次数,边扫边累计答案,O(n)。
leetcodecnsubarray-sum-equals-k
前缀和哈希表数组cpppython
普及+/提高2026-07-28 22:05打开
dummy + prev/a/b/next 四指针每轮重连已交换段和待处理段。
leetcodecnswap-nodes-in-pairs
链表递归cpppython
普及+/提高2026-07-28 22:05打开
定义 mirror(a,b):值相等且 a.left 对 b.right、a.right 对 b.left。
leetcodecnsymmetric-tree
二叉树递归BFScpppython
入门2026-07-28 22:05打开
双指针维护左右最高柱,较矮侧水量可立即确定,O(n) 时间 O(1) 空间。
leetcodecntrapping-rain-water
双指针动态规划数组cpppython
提高+/省选-2026-07-28 22:05打开
排序后固定第一个数,剩余区间用双指针,跳过相同值去重,O(n²)。
leetcodecn3sum
双指针排序数组cpppython
普及+/提高2026-07-28 22:03打开
双指针维护区间,面积由短板决定,每次移动较矮一侧,O(n)。
leetcodecncontainer-with-most-water
双指针贪心数组cpppython
普及+/提高2026-07-28 22:03打开
双指针:write 指针收集非零元素,剩余补零,保持非零相对顺序。
leetcodecnmove-zeroes
双指针数组cpppython
入门2026-07-28 22:03打开
放入集合,只从 x-1 不存在的起点向后扩展,每个数至多被访问一次,均摊 O(n)。
leetcodecnlongest-consecutive-sequence
哈希表集合数组cpp
普及+/提高2026-07-28 22:01打开
为每个单词构造 26 字母计数 key,哈希到同一组;异位词一定有相同的字母构成。
leetcodecngroup-anagrams
哈希表字符串排序cpp
普及+/提高2026-07-28 21:58打开
遍历数组时用哈希表保存值到下标的映射,在线查找当前数所需的补数。
leetcodecntwo-sum
哈希表数组pythoncpp
入门2026-07-28 18:13打开
用按高度滚动的动态规划合并连续点击与重力转移,并在管道位置过滤非法高度。
luoguP1941
动态规划DP模拟
普及+/提高2026-07-24 17:47打开
用 Python 整数位集加速 Warshall 传递闭包。
luoguB3611
传递闭包Floyd位运算python
普及2026-07-17 03:00打开
对十个数字求变换传递闭包,再把每一位的可达数字数相乘。
luoguP1037
传递闭包乘法原理位运算python
普及-2026-07-17 03:00打开
在有向图上同时传播路径最低买价和最大已获利润。
luoguP1073
图上 DP最短路队列松弛python
提高2026-07-17 03:00打开
按时间增量加入 Floyd 中间点,在线回答当前已重建村庄间最短路。
luoguP1119
Floyd离线询问增量算法python
普及+/提高-2026-07-17 03:00打开
BFS 分层并在最短层边上累加方案数,支持重边。
luoguP1144
BFS最短路计数前向星python
普及+/提高-2026-07-17 03:00打开
二分允许的最高城市收费,用受限 Dijkstra 检查血量能否到达终点。
luoguP1462
二分答案Dijkstra最短路python
普及+/提高-2026-07-17 03:00打开
对配方超边做 Dijkstra 式松弛,再按最小成本递增顺序统计最优方案数。
luoguP1875
最短路Dijkstra计数python
提高2026-07-17 03:00打开
把三类作物数量关系统一成差分约束边,并检测负环。
luoguP1993
差分约束负环SPFApython
普及+/提高-2026-07-17 03:00打开
Floyd 同时维护最短距离和路径数,再按经过节点的路径比例计算重要度。
luoguP2047
Floyd最短路计数中心性python
提高2026-07-17 03:00打开
用位集传递闭包统计每头牛已知强于和弱于的数量。
luoguP2419
传递闭包位运算偏序python
普及2026-07-17 03:00打开
Dijkstra 同时维护每点严格不同的最短与次短距离。
luoguP2865
次短路Dijkstra最短路python
普及+/提高-2026-07-17 03:00打开
Floyd 预处理岛屿两两最短危险值,再累加指定访问序列相邻项。
luoguP2910
Floyd最短路python
普及2026-07-17 03:00打开
把下界约束建成 0/1 边,SCC 判严格环后在缩点 DAG 上求最长路。
luoguP3275
差分约束强连通分量DAGpython
提高2026-07-17 03:00打开
从节点 1 运行 SPFA,以最短路边数达到 n 判断可达负环。
luoguP3385
负环SPFA最短路python
普及+/提高-2026-07-17 03:00打开
以最小步长为模建立余数图,Dijkstra 求每类余数最早可达楼层。
luoguP3403
同余最短路Dijkstra数学python
提高2026-07-17 03:00打开
把免费次数作为分层状态,在 n(k+1) 个状态上运行 Dijkstra。
luoguP4568
分层图Dijkstra状态扩展python
提高2026-07-17 03:00打开
用 heapq 实现带过期状态判断的 Dijkstra,求非负权有向图单源最短路。
luoguP4779
Dijkstra最短路heapqpython
普及+/提高-2026-07-17 03:00打开
把 x_c-x_c'<=y 转成 c' 到 c 的边,用最短路构造可行解。
luoguP5960
差分约束SPFA负环python
普及+/提高-2026-07-17 03:00打开
Floyd 后枚举传送门端点,逐点对比较原路和两个传送方向。
luoguP6464
Floyd枚举全源最短路python
普及+/提高-2026-07-17 03:00打开
先求树的直径,在直径上用双指针枚举长度不超过 s 的核区间,偏心距由两端距离与分支最大深度决定。
luoguP1099
树的直径双指针贪心
提高2026-07-17 02:00打开
对每个中间点聚合邻居权值,用 S²−Σw² 得到距离为 2 的有序点对总和,用前两大权值求最大值。
luoguP1351
图论枚举数学
普及2026-07-17 02:00打开
把观察条件改写为深度等式,按 LCA 拆两段路径,用桶与树上差分在 DFS 中统计每个观察员看到的人数。
luoguP1600
LCA树形差分事件计数倍增
省选/NOI-2026-07-17 02:00打开
任选根 DFS 求每棵子树大小,边费用 = 边权 × |2·子树大小 − n|,一次遍历累加总费用。
luoguP2052
树形 DP子树大小前向星
普及2026-07-17 02:00打开
二分答案,倍增 LCA 求路径长度,树上差分找所有超标路径的公共边并比较最大公共边权。
luoguP2680
二分答案LCA树上差分倍增
提高2026-07-17 02:00打开
用树链剖分把子树与根路径映射成数组区间,双树状数组维护区间加与区间和,根路径和 O(log^2 n)。
luoguP3178
重链剖分树状数组区间加
提高+/省选-2026-07-17 02:00打开
树链剖分把路径拆成区间,按宗教拆成多棵动态开点线段树,只统计同宗教城市的评级和与最大值。
luoguP3313
重链剖分动态线段树路径查询
提高+/省选-2026-07-17 02:00打开
两条树上路径相交当且仅当某条路径的 LCA 落在另一条路径上,用距离等式 dist(u,x)+dist(x,v)=dist(u,v) 判断点在路径上。
luoguP3398
LCA倍增路径相交
普及+/提高-2026-07-17 02:00打开
重链剖分把祖先路径拆成 O(log n) 段连续区间,线段树维护段内最大已标记 dfn,逐链向上查询最近标记祖先。
luoguP4092
重链剖分线段树祖先查询
提高+/省选-2026-07-17 02:00打开
用树链剖分把根到节点的路径拆成重链段,线段树维护段内黑点最小 dfn,从根侧逐段查询得第一个黑点。
luoguP4116
重链剖分线段树路径查询
提高+/省选-2026-07-17 02:00打开
最坏时间 = min(到两朋友距离) + 两朋友距离;A、B 取直径端点,三次 BFS 后 O(n) 扫描答案。
luoguP4408
树的直径BFS贪心
提高2026-07-17 02:00打开
拓扑剥叶给每个节点分层,选层号最大的 k 个连通节点作核心,答案即第 k+1 大的层号。
luoguP5536
拓扑排序贪心
普及+/提高-2026-07-17 02:00打开
根路径 G 前缀和配合倍增 LCA 容斥,O(log n) 回答路径上是否出现指定品种。
luoguP5836
LCA倍增前缀和USACO
普及2026-07-17 02:00打开
离线压缩坐标,外层线段树寻找最左可行 x,组内 Fenwick 找最小可行 y。
codeforces19D
线段树树状数组坐标压缩二维查询python
提高+/省选-2026-07-16 23:59打开
Luogu 无法提交 Codeforces 原题,解析已迁移至 codeforces/19D,本页仅保留入口。
luoguCF19D
线段树树状数组坐标压缩二维查询
提高+/省选-2026-07-16 23:59打开
用线段树双懒标记维护区间赋值与区间加,赋值覆盖加法、下传先赋值后加,查询区间最大值 O(log n)。
luoguP1253
线段树懒标记区间赋值区间加区间最大值
普及+/提高-2026-07-16 23:59打开