数据结构与算法之——常见面试题及解答3
一 概述
- ArrayList 扩容机制?
- 栈实现队列 & 队列实现栈
- Trie 树(字典树)
- 并查集(Union-Find)
- 图结构相关知识
- 滑动窗口思想(双指针)
- 堆(优先队列)
- 动态规划经典问题
- 回溯经典题目(组合型)
- 常见面试题解法对比
二 面试题解答(仅供参考)
2.1 ArrayList 扩容机制?
1 | 面试常问: 插入大量数据时性能为何下降? |
2.2 栈实现队列 & 队列实现栈
1 | 面试常问:手写实现 |
2.3 Trie 树(字典树)
1 | 1、典型题目: |
2.4 并查集(Union-Find)
1 | 1、应用场景: |
2.5 图结构相关知识
知识点 | 描述 |
---|---|
邻接矩阵 | 空间 O(n²),稠密图 |
邻接表 | 空间 O(n+e),稀疏图 |
BFS | 用队列,适合求最短路径 |
DFS | 用栈或递归 |
拓扑排序 | DAG 有向无环图中常用,Kahn算法 |
Dijkstra | 单源最短路径算法,基于优先队列 |
Floyd / Bellman-Ford | 全源最短路径算法 |
2.6 滑动窗口思想(双指针)
1 | 1、常见题型: |
2.7 堆(优先队列)
1 | 1、常见考点: |
2.8 动态规划经典问题
题型 | 描述 |
---|---|
爬楼梯 | 一维DP:dp[i] = dp[i-1] + dp[i-2] |
最大子数组和 | Kadane算法 |
股票买卖 | dp[i][j] 表示第 i 天状态 j(持有/未持有) |
背包问题 | 二维或一维压缩 DP |
最长上升子序列 LIS | O(n²) / O(nlogn)(用二分) |
2.9 回溯经典题目(组合型)
题型 | 描述 |
---|---|
全排列 | 无重复或有重复排列 |
子集 / 组合 | 按条件组合元素 |
N 皇后 | 符合条件的棋盘状态 |
单词搜索 | 网格DFS + visited标记 |
数独求解 | 行列宫合法性检查 + 回溯 |
2.10 常见面试题解法对比
题目 | 解法1 | 解法2 |
---|---|---|
两数之和 | 暴力 O(n²) | 哈希表 O(n) |
滑动窗口最大值 | 暴力 | 单调队列 O(n) |
LRU 缓存 | HashMap + List | LinkedHashMap |
最长公共子序列 | 递归 | 动态规划 |
Top K | 排序 | 小根堆 O(nlogk) |