线性表专栏导览:数组与链表从原理到 LeetCode 面试通关
专栏定位
本专栏面向有一定编程基础、正在备战技术面试的工程师。目标是帮助读者真正理解线性表的底层原理,而非死记硬背题目套路。每道题的讲解都遵循”是什么 → 为什么 → 怎么做 → 边界与变体”的推导链,力求做到通俗易懂又有深度。
讨论范围严格限定:数组(Array)与单链表(Linked List),不涉及栈、队列、树、图等其他结构。
专栏目录
| 序号 | 文章标题 | 核心话题 | 覆盖 LeetCode 题目 |
|---|---|---|---|
| 01 | 线性表全景:数组与链表的本质与工程权衡 | 顺序存储 vs 链式存储、时间空间复杂度分析 | 概念篇,无具体题目 |
| 02 | 数组双指针:原地修改数组的核心范式 | 同向双指针、对撞双指针、原地写回 | Remove Duplicates from Sorted Array I/II、Remove Element |
| 03 | 数组二分搜索变体:旋转数组与中位数 | 二分不变量、边界条件、有序性利用 | Search in Rotated Sorted Array I/II、Median of Two Sorted Arrays |
| 04 | 哈希表与连续序列:Two Sum 与 Longest Consecutive Sequence | 空间换时间、哈希冲突、并查集 | Two Sum、Longest Consecutive Sequence |
| 05 | 多指针夹逼:3Sum、3Sum Closest、4Sum 系列 | 排序+双指针夹逼、去重逻辑、k-Sum 归约 | 3Sum、3Sum Closest、4Sum |
| 06 | 全排列与字典序:Next Permutation、Permutation Sequence、Gray Code | 字典序生成、阶乘数系、格雷码递推 | Next Permutation、Permutation Sequence、Gray Code |
| 07 | 矩阵数组专题:旋转、置零与数独校验 | 原地旋转技巧、行列标记、位图压缩 | Rotate Image、Set Matrix Zeroes、Valid Sudoku |
| 08 | 贪心策略:雨水、加油站与糖果分发 | 贪心正确性证明、单调栈、两次扫描 | Trapping Rain Water、Gas Station、Candy |
| 09 | 动态规划与位运算:爬楼梯、进位与异或 | DP 状态转移、大数加法、位掩码技巧 | Climbing Stairs、Plus One、Single Number I/II |
| 10 | 链表基础与哑节点技巧:删重与分区 | 哑节点消除边界、两路分区合并 | Remove Duplicates from Sorted List I/II、Partition List |
| 11 | 链表快慢指针:环检测、倒数节点与旋转 | Floyd 判圈、入环点定位、步差法 | Linked List Cycle I/II、Remove Nth Node From End of List、Rotate List |
| 12 | 链表反转艺术:局部反转、k 组翻转与节点交换 | 迭代三指针反转、递归反转、分组边界 | Reverse Linked List II、Reverse Nodes in k-Group、Swap Nodes in Pairs |
| 13 | 链表综合运用:大数加法、重排、随机指针与 LRU 缓存 | 进位模拟、中点分割、深拷贝哈希、哈希+双向链表 | Add Two Numbers、Reorder List、Copy List with Random Pointer、LRU Cache |
专栏阅读建议
- 按顺序阅读:前两篇是概念基础,后续各篇均有交叉引用,跳读容易丢失上下文
- 亲自动手:每篇讲解完后,强烈建议先不看代码,自己在 LeetCode 上独立实现一遍
- 关注推导过程:本专栏不追求”背答案”,而是强调为什么这样想,帮助举一反三
参考范围
本专栏题目选取范围与《LeetCode 题解》第 2 章线性表保持一致,共覆盖:
- 数组题目:2.1.1 ~ 2.1.24,共 24 道
- 单链表题目:2.2.1 ~ 2.2.14,共 14 道
合计 38 道高频面试题,覆盖 Google、Meta、Amazon、字节跳动、阿里等一线大厂高频考点。
排序与查找专题(第二辑)
本专题严格聚焦于线性表上的排序算法与查找算法,不涉及其他数据结构。题目来源对应《LeetCode 题解》第 6 章(排序)与第 7 章(查找)。
专题目录
| 序号 | 文章标题 | 核心话题 | 覆盖 LeetCode 题目 |
|---|---|---|---|
| 14 | 排序算法原理全景:归并、插入、计数与桶排序的底层逻辑 | 排序算法分类、时间/空间复杂度横向对比、稳定性分析、面试选型决策 | 概念篇,无具体题目 |
| 15 | 归并排序实战三连:数组合并与有序链表合并 | 归并分治框架、原地归并的空间陷阱、多路归并的优先队列实现 | Merge Sorted Array、Merge Two Sorted Lists、Merge k Sorted Lists |
| 16 | 链表排序双题精讲:插入排序与自底向上归并排序 | 链表插入排序的指针管理、链表归并排序的递归与迭代实现、O(1) 空间约束 | Insertion Sort List、Sort List |
| 17 | 创意排序:荷兰国旗问题与桶排序思想 | 三路快排思想、DNF 算法、鸽巢原理、桶的下界证明 | Sort Colors、First Missing Positive |
| 18 | 二分查找核心模板:插入位置与区间搜索 | 二分的四大模板、左闭右开不变量、重复元素的左右边界锁定 | Search Insert Position、Search for a Range |
| 19 | 二维有序矩阵查找:从暴力到 O(m+n) 的跨越 | 矩阵行列单调性利用、Z 字形搜索、二分降维、坐标压缩视角 | Search a 2D Matrix |
专题阅读建议
- 先读 14 篇:理解各排序算法的「性格特点」,后续题目的解法选型才有根基
- 排序篇(15-17):重点理解每道题为何选用当前排序算法,而非强行套模板
- 查找篇(18-19):二分查找的核心在于不变量维护,建议在纸上推导边界条件再看代码
- 本专题不覆盖:旋转数组二分查找(见第 03 篇)、哈希表查找(见第 04 篇)