LeetCode 题解(3):链表
learn from cyc2018 and LeetCode
1 | // Definition for singly-linked list. |
160. Intersection of Two Linked Lists (easy)
问题描述
寻找两个单链表相交的起始位置。

如上图,$A$,$B$两个单链表相交起始于 $c_1$ 结点。
请控制时间复杂度在 $O(n)$,空间复杂度在 $O(1)$。
题解
设 $A$ 的长度为 $a+c$,其中 $a$ 是与链表 $B$ 不相交的部分。同理,设 $B$ 的长度为 $b+c$。那么要想使两个指针同时访问到交点:
- $(a+c)+ b = (b+c)+a$
- 当访问 A 链表的指针访问到链表尾部时,令它从链表 B 的头部开始访问链表 B;同样地,当访问 B 链表的指针访问到链表尾部时,令它从链表 A 的头部开始访问链表 A。这样就能控制访问 A 和 B 两个链表的指针能同时访问到交点。
1 | class Solution { |
相关问题
599. Minimum Index Sum of Two Lists (easy)
206. Reverse Linked List (easy)
问题描述
翻转单链表。
题解
用递归的方法来做:
1 | class Solution { |
这样做时间复杂度很低,但是空间使用很高。如果利用头插法,可以保持时间复杂度基本不变的情况下,显著提高空间效率。
1 | class Solution { |
相关问题
92. Reverse Linked List II (medium)
234. Palindrome Linked List (easy)
21. Merge Two Sorted Lists (easy)
问题描述
归并两个有序列表
1 | // example |
题解
对于单链表问题,首先考虑递归:
1 | class Solution { |
相关问题
23. Merge k Sorted Lists (hard)
83. Remove Duplicates from Sorted List
问题描述
删除有序列表中的重复元素。
题解
考虑遍历整个列表
1 | class Solution { |
但是得到的结果却运行时间过长。

考虑用递归的方式求解:
1 | class Solution { |

速度方面好于遍历整个列表的方式。
相关问题
82. Remove Duplicates from Sorted List II (medium)
19. Remove Nth Node From End of List (medium)
问题描述
删除链表中倒数第 $n$ 个元素。
题解
利用双指针法求解。
1 | class Solution { |
相关问题
24. Swap Nodes in Pairs (medium)
问题描述
交换单链表中相邻两个元素的位置(不允许修改值)。
1 | // example |
题解
递归。
1 | class Solution { |
相关问题
25. Reverse Nodes in k-Group (hard)
445. Add Two Numbers II (medium)
问题描述
给定两个用链表表示的大整数,链表首位表示最高位,链表末尾表示最低位。计算两个大整数的和。
注意:不能修改原始链表,即不允许进行链表翻转。
1 | // example |
题解
利用栈存储链表中数据即可。
1 | class Solution { |
相关问题
234. Palindrome Linked List (easy)
问题描述
判断单链表是否回文。注意,使用 $O(n)$ 时间复杂度和 $O(1)$ 空间复杂度。
题解
将链表从中间截开,翻转第二段链表,判断两段链表是否相等。
1 | class Solution { |
相关问题
206. Reverse Linked List (easy)
725. Split Linked List in Parts
问题描述
将给定单链表划分为 $k$ 组,每组元素数量尽可能相等,并且前一组数量一定大于等于后一组数量。
1 | // example |
题解
求出每组元素的个数,满元素组的数量与非满元素组的数量。
1 | class Solution { |
相关问题
328. Odd Even Linked List (medium)
328. Odd Even Linked List (medium)
问题描述
给定一个单链表,将其所有偶数位元素链接,所有奇数位连接,并将所有偶数位连接的结果置于奇数位链接结果之后。
1 | // example |
题解
1 | class Solution { |