- 快慢指针法/双指针法
- 19 删除链表的倒数第 N 个结点
- 141 环形链表
- 142 环形链表 II
- 876 链表的中间节点
- 1721 交换链表中的节点
- 链表常规操作:遍历,reverse,merge
- 2 两数相加:不要忘记最后的remainder
- 21 合并两个有序链表
- 86 分割链表
- 147 对链表进行插入排序: 一个指针顺序遍历,一个指针从头寻找插入位置,创建新的有序节点
- 206 反转链表:newnode,交替向前
- 725 分隔链表:先插入result,再遍历到位置断开链接
- [剑指 Offer 06]. 从尾到头打印链表
- 修改link
- 24 两两交换链表中的节点
- 61 旋转链表
- 82 删除排序链表中的重复元素 II:要向前判断两步
- 83 删除排序链表中的重复元素
- 138 复制带随机指针的链表: 注意Dict第一遍只创建val, 注意加入None节点
- 203 移除链表元素
- 237 删除链表中的节点
- 328 奇偶链表: 不需要新节点,只需要遍历偶数节点,然后交叉赋值
- 组合题:用到多个链表操作,
- 23 合并K个升序链表:归并排序,递归合并两个链表+sort merge
- 92 反转链表 II:找到倒数N节点+翻转链表+合并链表
- 143 重排链表v:中间节点+翻转链表+合并链表【原地合并:第二个合并到第一个链表上】
- 148 排序链表: 归并排序,递归进行find_mid + sort merge【注意中间节点fast判断条件】
- 234 回文链表:中间节点+翻转链表+遍历
- 设计类
- 146 LRU:双向链表,插入head(先建立node左右link,再插入),超过长度移除tail.prev, 移除是把元素左右node链接
- 707 设计链表
- 技巧题
- 160 相交链表:不用技巧,常规解法是把两个链表拼接到相同长度,然后开始遍历寻找相同节点
- 382 链表随机节点:蓄水池算法,第K个节点有1/K的概率被采样