数据结构与算法刷题——数据结构-清单(1.1)
一 概述
1 | 本文整理了常见 16 类数据结构相关的经典算法题,适用于 Java 开发、算法岗、Android 等方向面试准备。 |
二 数据结构
2.1. 数据结构基础(综合)
- 实现一个栈 / 队列 / 链表
- 实现 ArrayList(动态数组)
- 实现 LinkedList(单向/双向)
- 实现 HashMap / LRU 缓存机制
2.2. 数组、链表
- 两数之和
- 三数之和 / 四数之和
- 合并两个有序链表
- 环形链表(快慢指针)
- K 个一组翻转链表
- 链表排序(归并)
2.3. 哈希表
- 字符串中的第一个唯一字符
- 无重复字符的最长子串
- 字母异位词分组
- 两个数组的交集
2.4. 映射(Map)
- LRU 缓存机制
- LFU 缓存机制
- 字符频率统计(Map + 堆)
2.5. 栈、队列
- 用队列实现栈 / 用栈实现队列
- 有效的括号
- 最小栈
- 滑动窗口最大值
2.6. 优先级队列
- 前 K 个高频元素
- 数据流中的中位数
- 合并 K 个有序链表
2.7. 树、二叉树
- 前中后序遍历(递归/非递归)
- 层序遍历(BFS)
- 二叉树的最大深度 / 最小深度
- 最近公共祖先
2.8. 平衡二叉搜索树
- 将有序数组转为平衡 BST
- 验证是否为有效 BST
- AVL 插入操作
- 使用 TreeMap 解题
2.9. B+ 树(设计题)
- 数据库索引设计:支持范围查询
- 为什么数据库使用 B+ 树?
2.10. 堆
- 第 K 大的元素
- Top K 高频元素
- 最小 K 个数
- Heapify 实现
2.11. 图
- 岛屿数量(DFS / BFS)
- 克隆图
- 课程表(拓扑排序)
- 最短路径(Dijkstra)
- 判断图是否成环(并查集)
2.12. 跳表
- 跳表的实现(设计题)
- Redis 跳表设计问答
2.13. 哈夫曼树
- 构建哈夫曼编码树
- 实现字符串哈夫曼压缩
- 模拟编码过程
2.14. 并查集
- 朋友圈数量
- 冗余连接判断
- 岛屿数量(并查集解法)
- 连通网络的操作次数
2.15. 布隆过滤器
- 实现布隆过滤器
- 布隆过滤器在缓存/反爬中的应用
2.16. Trie 前缀树
- 实现 Trie 插入/查找/前缀匹配
- 单词搜索 I / II
- 最长公共前缀
- 字频统计(结合 Trie)
三 建议
1 | 建议:可按模块刷题,配合 Java 语言实现,积累工具类模板,助力面试手撕算法题。 |