数据结构与算法刷题——数据结构-清单(1.1)

一 概述

1
本文整理了常见 16 类数据结构相关的经典算法题,适用于 Java 开发、算法岗、Android 等方向面试准备。

二 数据结构

2.1. 数据结构基础(综合)

  1. 实现一个栈 / 队列 / 链表
  2. 实现 ArrayList(动态数组)
  3. 实现 LinkedList(单向/双向)
  4. 实现 HashMap / LRU 缓存机制

2.2. 数组、链表

  1. 两数之和
  2. 三数之和 / 四数之和
  3. 合并两个有序链表
  4. 环形链表(快慢指针)
  5. K 个一组翻转链表
  6. 链表排序(归并)

2.3. 哈希表

  1. 字符串中的第一个唯一字符
  2. 无重复字符的最长子串
  3. 字母异位词分组
  4. 两个数组的交集

2.4. 映射(Map)

  1. LRU 缓存机制
  2. LFU 缓存机制
  3. 字符频率统计(Map + 堆)

2.5. 栈、队列

  1. 用队列实现栈 / 用栈实现队列
  2. 有效的括号
  3. 最小栈
  4. 滑动窗口最大值

2.6. 优先级队列

  1. 前 K 个高频元素
  2. 数据流中的中位数
  3. 合并 K 个有序链表

2.7. 树、二叉树

  1. 前中后序遍历(递归/非递归)
  2. 层序遍历(BFS)
  3. 二叉树的最大深度 / 最小深度
  4. 最近公共祖先

2.8. 平衡二叉搜索树

  1. 将有序数组转为平衡 BST
  2. 验证是否为有效 BST
  3. AVL 插入操作
  4. 使用 TreeMap 解题

2.9. B+ 树(设计题)

  1. 数据库索引设计:支持范围查询
  2. 为什么数据库使用 B+ 树?

2.10. 堆

  1. 第 K 大的元素
  2. Top K 高频元素
  3. 最小 K 个数
  4. Heapify 实现

2.11. 图

  1. 岛屿数量(DFS / BFS)
  2. 克隆图
  3. 课程表(拓扑排序)
  4. 最短路径(Dijkstra)
  5. 判断图是否成环(并查集)

2.12. 跳表

  1. 跳表的实现(设计题)
  2. Redis 跳表设计问答

2.13. 哈夫曼树

  1. 构建哈夫曼编码树
  2. 实现字符串哈夫曼压缩
  3. 模拟编码过程

2.14. 并查集

  1. 朋友圈数量
  2. 冗余连接判断
  3. 岛屿数量(并查集解法)
  4. 连通网络的操作次数

2.15. 布隆过滤器

  1. 实现布隆过滤器
  2. 布隆过滤器在缓存/反爬中的应用

2.16. Trie 前缀树

  1. 实现 Trie 插入/查找/前缀匹配
  2. 单词搜索 I / II
  3. 最长公共前缀
  4. 字频统计(结合 Trie)

三 建议

1
2
3
4
5
建议:可按模块刷题,配合 Java 语言实现,积累工具类模板,助力面试手撕算法题。

✅ 推荐刷题平台:Leetcode、力扣国际站、牛客、Codeforces
✅ 刷题顺序:数据结构基础 → 数组/链表 → 哈希/栈队列 → 树 → 图 → 高级结构(Trie、跳表、布隆)
✅ 建议用 Java 练习,写成工具类 / 可复用组件,有利于面试快速手撕