数组、链表、栈、队列、树与图。把数据结构吃透,写出的代码才有根基,性能心里有数。
数据结构是算法的载体,先掌握组织数据的基本方式。
数组:连续内存,随机访问 O(1),插入删除 O(n)。链表:离散内存,插入删除 O(1),随机访问 O(n)。栈:后进先出,用于函数调用、括号匹配、撤销操作。队列:先进先出,用于任务调度、BFS 搜索。哈希表:以空间换时间,实现 O(1) 查找。树:二叉树、二叉搜索树、堆,是很多复杂结构的地基。图:顶点 + 边,建模网络、社交、地图等关系。DFS / BFS:树的遍历与图的最短路径(无权)。动态规划:状态定义 + 转移方程,是面试重灾区。贪心:局部最优递推全局最优,需证明。 递归 的思维,再学 DP 会事半功倍。用大 O 表示法衡量算法效率,是选择方案的依据。
写代码前先想复杂度,面试时主动说出,会加分。
推荐按阶段推进,每阶段配合刷题巩固:
坚持每天 1-2 题,比一次刷很多更有效。