跳到正文
前端知识库
算法

链表 高频追问 Q&A

A: 统一头节点被删/改的边界,减少分支判断。(深入阅读:链表基础:哨兵节点)

2 分钟

链表 高频追问 Q&A

1. Q: 链表题为什么常加 dummy 节点?

A: 统一头节点被删/改的边界,减少分支判断。(深入阅读:链表基础:哨兵节点

2. Q: 反转链表最容易错哪?

A: 丢失后继节点。必须先存 next 再改 cur.next。(深入阅读:反转链表:迭代与递归

3. Q: 快慢指针怎么找环入口?

A: 相遇后,一个指针回头结点,两者同速前进,再次相遇即入口。(深入阅读:链表环:检测与入口查找快慢指针套路

4. Q: 为什么链表常见 O(1) 空间写法?

A: 面试更看重指针操作能力,能不用额外结构就尽量不用。(深入阅读:链表的复杂度与数据局部性

5. Q: 合并 K 个有序链表怎么优化?

A: 分治或最小堆,复杂度从 O(kN) 优化到 O(N log k)。(深入阅读:有序链表合并与分治TopK 小顶堆实战

6. Q: 链表和数组选型怎么说?

A: 频繁插删选链表,频繁随机访问选数组。(深入阅读:链表基础知识速览数据结构选型速记

7. Q: LRU 为什么要组合 Map 和双向链表?

A: Map 按 key 找节点是均摊 O(1),双向链表能在已知节点时 O(1) 摘除并移动到最近使用端;两者组合才能让 get/put 都保持 O(1)。(深入阅读:双向链表与 LRU Cache链表与 LRU 的完整分析

8. Q: LRU 的哨兵节点有什么用?

A: 统一头尾插入和删除的边界,避免空链表、头节点和尾节点分别写分支。(深入阅读:链表基础:哨兵节点链表与 LRU 的完整分析