判断单链表环并找出环起点:Floyd 判圈算法
先用快慢指针判断链表是否有环,若有环则通过等速回找法定位环的入口节点。两道经典题的合并:Floyd 判圈 + 环起点的数学证明。附带 C / C++ / JavaScript 三语言实现。
1290 字
|
6 分钟
判断两个单链表是否相交并找出交点:双指针交替遍历法
判断两条单链表是否相交,若相交则找出交点。使用双指针交替遍历法:pA 走到末尾后跳到 pB 的头,pB 走到末尾后跳到 pA 的头,两指针最终相遇于交点或同归于 null。附带 C / C++ / JavaScript 三语言实现。
1201 字
|
6 分钟
寻找单链表的倒数第 K 个节点:双指针间隔法
只遍历一次就找到单链表倒数第 K 个节点。使用双指针技巧:fast 先走 K 步,然后 slow 和 fast 同步前进,fast 到末尾时 slow 恰在目标位置。附带 C / C++ / JavaScript 三语言实现。
1005 字
|
5 分钟
合并 K 个有序链表:最小堆与分治法
将 K 个升序链表合并为一个新的升序链表。介绍两种解法:最小堆(优先队列)和分治法两两合并,分析各自优劣。附带 C / C++ / JavaScript 三语言实现。
1618 字
|
8 分钟
合并两个有序链表:双指针与 Dummy 节点
将两个升序链表合并为一个新的升序链表。使用双指针逐个比较节点值,dummy 虚拟头节点统一处理边界情况。附带 C / C++ / JavaScript 三语言实现。
1010 字
|
5 分钟
寻找单链表的中点:快慢指针经典应用
使用快慢指针技巧一次遍历找到单链表的中间节点。slow 每次走一步,fast 每次走两步,fast 到终点时 slow 恰在中点。附带 C / C++ / JavaScript 三语言实现。
1010 字
|
5 分钟
链表的分解:双 Dummy 节点分离再拼接
将链表中小于 x 的节点和大于等于 x 的节点分离,并保持相对顺序不变。使用两个 dummy 虚拟头节点分别收集,最后拼接。附带 C / C++ / JavaScript 三语言实现。
1089 字
|
5 分钟
单链表七大算法:双指针与分治思想精讲
系统掌握单链表七大经典算法:合并有序链表、链表分解、合并 K 个链表、倒数第 K 个节点、中点查找、环检测、链表相交。使用双指针与分治思想,附带 C / C++ / JavaScript 三语言实现。
823 字
|
4 分钟