Skip to content

链表算法题分类解析

1. 遍历访问类(虚拟头结点技巧)

核心解题思路:当需要对链表的头结点进行插入或删除操作时,使用 dummy 节点可以避免单独处理头结点的特殊情况,让代码更简洁统一。

难度题目题号核心思路简介
简单移除链表元素203使用 dummy 节点统一处理头结点删除的情况
简单删除排序链表中的重复元素83遍历链表,遇到相同值的节点就跳过
中等删除排序链表中的重复元素 II82只要重复就全部删除,需要记录前驱节点
中等重排链表143综合题:找中点 + 反转 + 合并

2. 反转类(指针修改的核心考点)

核心解题思路:反转链表是链表题中指针修改最典型的代表。掌握反转任意一段链表的能力可以解决一大类问题。

难度题目题号核心思路简介
简单反转链表206迭代(双指针)和递归两种写法都要掌握
中等反转链表 II92反转从位置 m 到 n 的链表,需要记录前后断点
中等回文链表234快慢指针找中点 + 反转后半部分 + 比较
困难K 个一组翻转链表25先实现反转一段的函数,然后分组处理

3. 双指针技巧类(快慢指针 / 前后指针)

核心解题思路:双指针可以在一次遍历中解决找中点、倒数第K个、环检测等问题,避免多次遍历链表。

难度题目题号核心思路简介
简单链表的中间结点876快指针走两步,慢指针走一步,快指针到终点时慢指针在中点
简单环形链表141快慢指针,如果相遇则有环
中等环形链表 II142找到相遇点后,从头和相遇点同步走,相遇处即环入口
简单相交链表160双指针分别遍历,走到头后交换路线,相遇点即交点
中等删除链表的倒数第 N 个结点19快指针先走N步,然后快慢一起走,慢指针指向待删节点的前驱

4. 链表合并与分解

核心解题思路:链表的第二个核心考点——链表的拼接。通过操作指针将多个链表连接起来。

难度题目题号核心思路简介
简单合并两个有序链表21双指针比较,依次接入新链表
中等分隔链表86用两个 dummy 链表分别收集小于 x 和大于等于 x 的节点,最后合并
中等奇偶链表328将奇数位节点和偶数位节点分开后合并
中等两数相加2模拟加法,注意进位处理
困难合并 K 个升序链表23可以用优先队列(最小堆)或分治合并

5. 复杂结构类(带随机指针 / 多级指针)

核心解题思路:考察对链表结构的深拷贝能力,以及如何处理特殊指针。通常有哈希表缓存和原地复制两种解法。

难度题目题号核心思路简介
中等复制带随机指针的链表138法1:用 Map 缓存新旧节点映射;法2:原地复制拆分
中等扁平化多级双向链表430递归或栈处理,将子链表插入到当前节点之后

6. 排序与旋转

核心解题思路:在链表上进行排序和旋转操作,需要同时结合查找、修改指针等多种技巧。

难度题目题号核心思路简介
中等排序链表148归并排序(找中点 + 递归排序 + 合并)
中等旋转链表61先成环,然后根据 k 找到新头尾断开
中等两两交换链表中的节点24递归或迭代,操作三个节点的指针

链表刷题核心心法

  1. 一定要画图:指针操作很容易乱,动手画一画每一步的指向关系。
  2. 两个考点指针修改(如反转)和链表拼接(如合并)。
  3. 虚拟头结点(dummy node):当需要操作头结点(删除或插入)时,用 dummy 统一逻辑。
  4. 边界检查:注意空链表、只有一个节点、k 大于链表长度等情况。

Released under the MIT License.