链表
1. 常用解题方法
- 增加一个哑结点
- 使用双指针
- 使用快慢指针
2. 常用基本函数
-
找倒数第k个结点 (find)
- 使用快慢指针
-
反转链表 (invertList)
- 使用栈
- 原地反转
-
合并两个有序表 (mergeTwoList)
-
判断是否存在环 (hasCycle)
- 哈希表法
- 快慢指针法
-
多个链表合并为有序表 (mergeLists)
- 优先队列(最小堆)
-
链表结点排序 (sort)
- 分割(从中点分割,递归子链表)+ 合并
-
找链表中点 (findMiddleNode)
- 快慢指针找中点
- 奇数长度时,
slow
指向最中间结点,fast
指向最后一个结点 - 偶数长度时,
fast
指向中间两结点的后一个,fast
指向nullptr
(链表末尾的下一个位置)
- 奇数长度时,
- 快慢指针找中点