021:反转链表 II

LeetCode 92 https://leetcode.cn/problems/reverse-linked-list-ii/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 这道题需要翻转中间一段链表。我们定义这段链表的前一个节点为 p0。翻转结束之后,需要修改 p0->next->next = cur, p0->next = pre。 时间复杂度:O(right)。 空间复杂度:O(1)。 ...

六月 29, 2025 · Cassius

009:合并两个有序链表

LeetCode 21 https://leetcode.cn/problems/merge-two-sorted-lists/description/ 难度:简单 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 每次将 list1 和 list2 中较小值作为下一个节点,最后将剩余节点接在后面。 时间复杂度:O(n+m),其中 n 为 list 1 的长度,m 为 list 2 的长度。 空间复杂度:O(1)。仅用到若干额外变量。 ...

六月 27, 2025 · Cassius

005:K个一组翻转链表

LeetCode 25 https://leetcode.cn/problems/reverse-nodes-in-k-group/description/ 难度:困难 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 反转一组节点的代码与 LeetCode 206 类似,每次修改一个节点的 next。 ListNode* nxt = cur->next; cur->next = pre; pre = cur; cur = nxt; 需要注意的是,每次需要保存一组节点的上一个节点 p0,反转结束后,更新 p0 和 p0->next。 ListNode* nxt = p0->next; p0->next->next = cur; p0->next = pre; p0 = nxt; 时间复杂度:O(n),其中 n 为链表节点个数。 空间复杂度:O(1),仅用到若干额外变量。 ...

六月 25, 2025 · Cassius

003:反转链表

LeetCode 206 https://leetcode.cn/problems/reverse-linked-list/description/ 难度:简单 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 本题有迭代和递归两种解法,迭代法更易理解,且空间复杂度更优。 ...

六月 25, 2025 · Cassius

002:LRU缓存

LeetCode 146 https://leetcode.cn/problems/lru-cache/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 本题是双向链表和哈希表的经典题目。每个节点有 key,value,还有两个指针 prev 和 next 分别指向前一个和下一个节点。 此外,链表中还包含一个 dummy 节点,让每个节点的 prev 和 next 都不为空。 时间复杂度:所有操作均为 O(1)。 空间复杂度:O(min(p,capacity)),其中 p 为 put 的调用次数。 ...

六月 25, 2025 · Cassius