观察题目是否反复出现“链表”对应的数据访问、状态压缩或边界推进特征。
链表:模式识别与解题模板
本专题包含 11 道题。先辨认输入结构和目标,再选择能够持续保持关键不变量的算法,而不是只记住某一道题的代码。
高频模式
观察题目是否反复出现“双指针”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“哈希表”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“递归”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“数学”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“设计”对应的数据访问、状态压缩或边界推进特征。
核心模板
- 先写清输入规模、目标值和允许修改的数据。
- 定义每一步开始和结束时必须成立的不变量。
- 把循环、递归、队列或状态转移拆成可验证事件。
- 用最小输入、重复值和退化结构验证边界。
常见错误
- 只根据样例选择算法,没有核对复杂度上限。
- 更新多个指针或状态时破坏旧值依赖。
- 忽略空输入、重复值、断开结构或极端顺序。
- 代码结果正确,但解释没有说明为什么不会漏解或重复。
代表题
环形链表
判断链表是否存在环。
两数相加
把逆序链表表示的两个整数相加。
合并两个有序链表
合并两条升序链表。
随机链表的复制
深拷贝带 random 指针的链表。
反转链表 II
只反转链表指定区间。
K 个一组翻转链表
每 k 个节点为一组翻转链表。
删除链表的倒数第 N 个结点
删除链表倒数第 n 个节点。
删除排序链表中的重复元素 II
删除所有出现重复的值,只保留从未重复的节点。