【算法方法总结·五】链表操作的一些技巧和注意事项
【算法方法总结·五】链表操作的一些技巧和注意事项
- 【算法方法总结·一】二分法的一些技巧和注意事项
- 【算法方法总结·二】双指针的一些技巧和注意事项
- 【算法方法总结·三】滑动窗口的一些技巧和注意事项
- 【算法方法总结·四】字符串操作的一些技巧和注意事项
- 【算法方法总结·五】链表操作的一些技巧和注意事项 🎯
- 【算法方法总结·六】栈队列堆的一些技巧和注意事项
【链表操作】
(1)自定义链表
- 单链表
1 | public class ListNode { |
- 双向链表
1 | public class ListNode { |
(2)使用 Collection
ArrayList
:动态数组 实现,适合 读多写少
1 | List<Integer> list = new ArrayList<>(); |
LinkedList
:双向链表 实现,适合 写多读少,LinkedList
经常用来实现队列,栈队列章节会提及
本章最重要的操作:虚拟头结点
- 它的核心价值在于 统一操作逻辑 与 简化边界处理
- 和 哨兵机制 有异曲同工之妙,都是 以空间换可维护性
1 | // 设置一个虚拟的头结点 |
List
的注意事项
- 下面的例子一定要用
res.add(new ArrayList(path))
1 | List<Integer> path = new ArrayList<>(); |
相关力扣题
- 相关解法见【算法题解答·五】链表操作
203.移除链表元素
206.反转链表
24. 两两交换链表中的节点
234.回文链表
142.环形链表Ⅱ
2.两数相加
19.删除链表的倒数第N个结点
25.k个一组翻转链表
148.排序链表
23.合并k个升序链表
146.LRU缓存
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 易思涯の博客!