1. "算法"和"数据结构"到底是什么?

🍳 类比——做菜:
数据结构 = 厨房里的工具和容器:数组是盘子(摆一排)、链表是串串(穿起来)、栈是叠盘子(后放先拿)、队列是排队(先来先走)
算法 = 菜谱步骤:怎么用这些容器高效完成任务(怎么排序、怎么找东西、怎么走迷宫)

简单说:

为什么面试考算法:考察逻辑思维、代码功底、对性能的理解——不是考"背题"。

🎯 记住

  • 数据结构 = 存法;算法 = 解法;存法决定解法的效率
  • Java 的 ArrayList/HashMap 都是现成数据结构——你每天都在用,算法题是让你"会造 + 会选"

2. 什么是"时间复杂度"?(面试第一问)

时间复杂度(大 O):数据量 n 变大时,程序运行时间增长的速度。不是算具体秒数,是看"量级趋势"。

感受复杂度:n = 100 万
O(1)      // HashMap 查一次:瞬间(不管数据多大都是 1 步)
O(log n)  // 二分查找:约 20 步(100 万折半 20 次)
O(n)      // 遍历一次:100 万步(毫秒级)
O(n log n) // 快排:约 2000 万步(OK)
O(n²)     // 双重循环:1 万亿步(十几分钟起步 💥)
O(2ⁿ)     // 指数级:宇宙毁灭也算不完 ☠️

判断方法:数循环——一层循环 O(n),两层嵌套 O(n²),循环里砍一半 O(log n)。

🎯 记住

  • O(n²) 的代码在百万数据下必挂——所以算法题要"会优化"
  • 面试讲答案必讲复杂度:"这题暴力是 O(n²),我用哈希优化到 O(n)"——就这一句就赢了
  • 空间复杂度同理:额外开了多大内存(O(1)=不额外开,O(n)=开了一个数组)

3. 数据结构地图:什么时候用什么?(收藏)

数据结构 特点 什么时候用
数组按下标 O(1) 取固定大小、按下标访问
链表插入删除快(改指针)频繁增删、LRU 缓存
栈后进先出括号匹配、撤销操作
队列先进先出排队、BFS 层序遍历
哈希表(HashMap)查找 O(1)查找/去重/计数——最常用
堆(PriorityQueue)随时取最值 O(log n)TopK、中位数
二叉树/BST有序、O(log n) 查找排序、范围查找(TreeMap)
图节点 + 关系社交关系、地图、依赖

🎯 最高频组合

  • "找元素" → 先想哈希表(O(1))——解决 70% 的"暴力超时"问题
  • "取最值" → 堆;"有序" → 排序 + 二分;"相邻关系" → 图 + BFS/DFS

4. 零基础刷题路线(别从难的开始!)

  1. 阶段 0(1~2 周):先会写代码(beginner 模块)→ 数组、字符串、简单循环题
  2. 阶段 1(2~3 周):哈希表 + 双指针——两数之和、滑动窗口、无重复最长子串
  3. 阶段 2(2 周):链表 + 栈队列——反转链表、有效括号、LRU
  4. 阶段 3(3 周):二叉树——遍历、最大深度、层序、最近公共祖先
  5. 阶段 4(3 周):排序 + 二分 + 动态规划入门
  6. 持续:每日 1~2 题,用"高频 100 题"清单反复刷

🎯 刷题方法(比刷多少重要)

  • 先自己想 20 分钟 → 想不出看题解 → 合上答案自己重写一遍 → 隔天再写一遍
  • 每道题记录:思路一句话 + 复杂度 + 易错点
  • 同类型集中刷(一个套路打穿一类题),别东一题西一题
  • 本模块的 数据结构、排序二分、动态规划、高频题 页已整理好知识点和模板代码

🎤 常见面试追问

  1. 算法基础薄弱,面试怎么补救?——按刷题路线:哈希/双指针/链表/二叉树/排序二分/DP 入门,高频 100 题刷两遍,每题写清"思路+复杂度"。
  2. 刷题用什么语言?——用 Java(你面试的语言),顺便练 API(HashMap/PriorityQueue 等)。
  3. 手撕代码时要注意什么?——先确认边界(空输入、极端值)→ 讲思路 → 写代码 → 手动跑例子 → 说复杂度。别上来就写。
  4. 算法在工作中有用吗?——直接写排序的机会不多,但"数据结构和复杂度意识"每天都在用:选 HashMap 还是 List、接口慢是不是 O(n²)。

📖 名词解释(本页术语)

术语 大白话解释
算法(Algorithm)解决问题的步骤/方法,就像菜谱。同一个问题可以有多种算法(快慢不同)。
数据结构数据的组织方式(数组/链表/树/哈希表…),决定增删改查的快慢。
暴力解法最简单直接但通常很慢的解法(如双重循环 O(n²)),常作为优化的起点。
优化把慢的解法改快:换数据结构(哈希)、减循环(双指针)、记重复计算(DP)。
高频题面试出现频率最高的经典题(两数之和、反转链表、LRU、接雨水等),刷熟它们性价比最高。
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。