LinkedList
链表
链表操作基本都需要
prev指针, 搭配dummy用于操作头节点.
删除
交换
插入、归并
取中点
综合
特殊位置
通常搭配多指针使用
19. 删除链表的倒数第 N 个结点141. 环形链表142. 环形链表 IIf = 2 * nb, s = nb, 交点:a + nb 。 所以用个指针再走a即可。160. 相交链表
排序
插入排序
归并排序:注意找中点时的起点和循环终止条件的组合。
静态链表
技巧
分析
取中点
区分起点,其实这两种只是置换了下节点数量的奇偶性。
- 从dummy开始
- 从第一个节点开始
区分循环终止条件,注意这两种,在偶数情况下都是找到中点左边节点。
fast->next != nullptr && fast->next->next != nullptr奇数找到中点前置节点fast != nullptr && fast->next != nullptr奇树找到中点。总结
- 从dummy开始:两种都不用特判空,根据要求使用即可。
- 从第一个节点开始:注意,从第一节点开始和
fast->next != nullptr && fast->next->next != nullptr一起时,fast可能初始化为nullptr,注意特判。所以不推荐这种组合。
从dummy开始
这是逻辑最清晰的一种方式
如果循环终止条件为
终止条件: fast->next != nullptr && fast->next->next != nullptr
- 奇数情况下,会到中点前置节点。
- 偶数情况下,会找到中点左边节点。
终止条件 fast != nullptr && fast->next != nullptr
- 奇数情况下,会到中点。
- 偶数情况下,会到中点左边节点。
从第一个节点开始
注意第一个节点判空,奇偶情况和从dummy开始的情况对调即是答案。
LinkedList
https://messenger1th.github.io/2024/07/24/LeetCode/LinkedList/