| 题目 | 思路 |
|---|---|
| 160. 相交链表 | 注意不能比较节点的值而是比较节点的内存地址 |
| 206. 反转链表 | 引入pre节点来保存上一个节点 |
| 92. 反转链表 II | 区间反转 |
| 234. 回文链表 | 1. 快慢指针找到前半部分和后半部分,然后和后半部分的链表进行比较 2. 转化为数组再进行比较 |
| 141. 环形链表 | 1. 快慢指针遇不到就不存在环 2. 哈希表 |
| 142. 环形链表 II | 得到快指针和慢指针走过路程的关系式,如果相遇那么快指针比慢指针多走k倍环的长度 |
| 21. 合并两个有序链表 | 两个链表比较值,用额外的链表依次存储比较后的结果 |
| 2. 两数相加(也可以转化为大数相加) | 如果一个链表较短,则补零节点 |
| 19. 删除链表的倒数第 N 个结点 | 快慢指针,虚拟头节点避免头节点问题 |
| 24. 两两交换链表中的节点 | 1. 递归 2. 虚拟头节点,start = p.next;end = p.next.next |
| 138. 随机链表的复制 | 用字典存储原链表节点对映射关系 |
| 148. 排序链表 | 链表合并 + 归并(递归) |
| 23. 合并 K 个升序链表 | 链表合并 + 归并(递归) |
| 25. K 个一组翻转链表 | 递归 + 链表反转 |
| 146. LRU 缓存 | 双向链表存储,内部维护一个字典存node |
| 143. 重排链表 | 链表原地反转 + 寻找链表中点 + 链表合并 |
| 83. 删除排序链表中的重复元素 | 利用新指针找到不同的节点 |
| 82. 删除排序链表中的重复元素 II | 和83相似的思路 |
| 61. 旋转链表 | 找到规律,先断开再拼接 |
| 328. 奇偶链表 | 奇数头和偶数头 |
| 链表奇偶升序 | 拆分奇偶头 + 反转 + 合并 |
| 2487. 从链表中移除节点 | 单调栈 |