链表

36 阅读2分钟
题目思路
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. 从链表中移除节点单调栈