Skip to content

aqlzh/DataStructure-Java

Repository files navigation

DataStructure-Java 🔥 🔥

🚀 DataStructure-Java for leetcode and The Bule cup Solutions ✈️✈️

开源练习题库 😄

我爱计算机科学 !!

索引

🚩 🚩

authorlanguagelicense

参考链接

Data structures and Algorithms 💬

Data Structures

数据结构 变种 相关题目 讲解文章
顺序线性表:向量
单链表 1. 双向链表
2. 静态链表
3. 对称矩阵
4. 稀疏矩阵
哈希表 1. 散列函数
2. 解决碰撞/填充因子
栈和队列 1. 广义栈
2. 双端队列
队列 1. 链表实现
2. 循环数组实现
3. 双端队列
字符串 1. KMP算法
2. 有限状态自动机
3. 模式匹配有限状态自动机
4. BM 模式匹配算法
5. BM-KMP 算法
6. BF 算法
1. 二叉树
2. 并查集
3. Huffman 树
数组实现的堆 1. 极大堆和极小堆
2. 极大极小堆
3. 双端堆
4. d 叉堆
树实现的堆 1. 左堆
2. 扁堆
3. 二项式堆
4. 斐波那契堆
5. 配对堆
查找 1. 哈希表
2. 跳跃表
3. 排序二叉树
4. AVL 树
5. B 树 / B+ 树 / B* 树
6. AA 树
7. 红黑树
8. 排序二叉堆
9. Splay 树
10. 双链树
11. Trie 树
12. R 树
-------------------------------------------- -------------------------------------------------------------------------------------------- --------------------------- -----------------------------------

Algorithm

算法 具体类型 相关题目 讲解文章
排序算法 1. 冒泡排序
2. 插入排序
3. 选择排序
4. 希尔 Shell 排序
5. 快速排序
6. 归并排序
7. 堆排序
8. 线性排序算法
9. 自省排序
10. 间接排序
11. 计数排序
12. 基数排序
13. 桶排序
14. 外部排序 - k 路归并败者树
15. 外部排序 - 最佳归并树
递归与分治 1. 二分搜索/查找
2. 大整数的乘法
3. Strassen 矩阵乘法
4. 棋盘覆盖
5. 合并排序
6. 快速排序
7. 线性时间选择
8. 最接近点对问题
9. 循环赛日程表
动态规划 1. 矩阵连乘问题
2. 最长公共子序列
3. 最大子段和
4. 凸多边形最优三角剖分
5. 多边形游戏
6. 图像压缩
7. 电路布线
8. 流水作业调度
9. 0-1 背包问题/背包九讲
10. 最优二叉搜索树
11. 动态规划加速原理
12. 树型 DP
贪心 1. 活动安排问题
2. 最优装载
3. 哈夫曼编码
4. 单源最短路径
5. 最小生成树
6. 多机调度问题
回溯法 1. 装载问题
2. 批处理作业调度
3. 符号三角形问题
4. n 后问题
5. 0-1 背包问题
6. 最大团问题
7. 图的 m 着色问题
8. 旅行售货员问题
9. 圆排列问题
10. 电路板排列问题
11. 连续邮资问题
搜索 1. 枚举
2. DFS
3. BFS
4. 启发式搜索
随机化 1. 随机数
2. 数值随机化算法
3. Sherwood 舍伍德算法
4. Las Vegas 拉斯维加斯算法
5. Monte Carlo 蒙特卡罗算法
1. 计算 π 值
2. 计算定积分
3. 解非线性方程组
4. 线性时间选择算法
5. 跳跃表
6. n 后问题
7. 整数因子分解
8. 主元素问题
9. 素数测试
图论 1. 遍历 DFS / BFS
2. AOV / AOE 网络
3. Kruskal 算法(最小生成树)
4. Prim 算法(最小生成树)
5. Boruvka 算法(最小生成树)
6. Dijkstra 算法(单源最短路径)
7. Bellman-Ford 算法(单源最短路径)
8. SPFA 算法(单源最短路径)
9. Floyd 算法(多源最短路径)
10. Johnson 算法(多源最短路径)
11. Fleury 算法(欧拉回路)
12. Ford-Fulkerson 算法(最大网络流增广路)
13. Edmonds-Karp 算法(最大网络流)
14. Dinic 算法(最大网络流)
15. 一般预流推进算法
16. 最高标号预流推进 HLPP 算法
17. Primal-Dual 原始对偶算法(最小费用流)18. Kosaraju 算法(有向图强连通分量)
19. Tarjan 算法(有向图强连通分量)
20. Gabow 算法(有向图强连通分量)
21. 匈牙利算法(二分图匹配)
22. Hopcroft-Karp 算法(二分图匹配)
23. kuhn munkras 算法(二分图最佳匹配)
24. Edmonds’ Blossom-Contraction 算法(一般图匹配)
1. 图遍历
2. 有向图和无向图的强弱连通性
3. 割点/割边
3. AOV 网络和拓扑排序
4. AOE 网络和关键路径
5. 最小代价生成树/次小生成树
6. 最短路径问题/第 K 短路问题
7. 最大网络流问题
8. 最小费用流问题
9. 图着色问题
10. 差分约束系统
11. 欧拉回路
12. 中国邮递员问题
13. 汉密尔顿回路
14. 最佳边割集/最佳点割集/最小边割集/最小点割集/最小路径覆盖/最小点集覆盖
15. 边覆盖集
16. 二分图完美匹配和最大匹配问题
17. 仙人掌图
18. 弦图
19. 稳定婚姻问题
20. 最大团问题
数论 1. 最大公约数
2. 最小公倍数
3. 分解质因数
4. 素数判定
5. 进制转换
6. 高精度计算
7. 整除问题
8. 同余问题
9. 欧拉函数
10. 扩展欧几里得
11. 置换群
12. 母函数
13. 离散变换
14. 康托展开
15. 矩阵
16. 向量
17. 线性方程组
18. 线性规划
几何 1. 凸包 - Gift wrapping
2. 凸包 - Graham scan
3. 线段问题
4. 多边形和多面体相关问题
NP 完全 1. 计算模型
2. P 类与 NP 类问题
3. NP 完全问题
4. NP 完全问题的近似算法
1. 随机存取机 RAM
2. 随机存取存储程序机 RASP
3. 图灵机
4. 非确定性图灵机
5. P 类与 NP 类语言
6. 多项式时间验证
7. 多项式时间变换
8. Cook定理
9. 合取范式的可满足性问题 CNF-SAT
10. 3 元合取范式的可满足性问题 3-SAT
11. 团问题 CLIQUE
12. 顶点覆盖问题 VERTEX-COVER
13. 子集和问题 SUBSET-SUM
14. 哈密顿回路问题 HAM-CYCLE
15. 旅行售货员问题 TSP
16. 顶点覆盖问题的近似算法
17. 旅行售货员问题近似算法
18. 具有三角不等式性质的旅行售货员问题
19. 一般的旅行售货员问题
20. 集合覆盖问题的近似算法
21. 子集和问题的近似算法
22. 子集和问题的指数时间算法
23. 子集和问题的多项式时间近似格式
------------ ------------------------------------------------------------------ ----------------------------------------------------------------- --------------------

洛谷

# 题名 题解 难度 标签
1001 A+B Problem Java 简单 入门
1000 超级玛丽游戏 Java 简单 打印字符串
5704 字母转换 Java 简单 ASCII与整型
5705 数字反转 Java 简单 For 循环倒序输出
5706 再分肥宅水 Java 简单 format 格式化输出
1425 小鱼的游泳时间 Java 简单 if else
5708 三角形面积 Java 简单 Math.sqrt
1421 小玉买文具 Java 简单 化整

分支结构

# 题名 题解 难度 标签
5711 闰年判断 Java 简单 闰年规则
5712 Apples Java 简单 判断
5713 洛谷团队系统 Java 简单 方程比较
1085 不高兴的津津 Java 简单 数组 存储
1055 ISBN 号码 Java 简单 需求For 循环算法
5717 【深基3.习8】三角形分类 Java 简单 选择
1888 三角函数 Java 简单 选择
5715 三位数排序 Java 简单 Arrays.Sort
4414 [COCI2006-2007#2] ABC Java 简单 对应排序
1422 小玉家的电费 Java 简单 else if 浮点格式输出

循环结构

# 题名 题解 难度 标签
5718 寻找最小值 Java 简单 基本
5719 分类平均 Java 简单 基本 用法
5720 一尺之棰 Java 简单 while 简单循环
5721 数字直角三角形 Java 简单 while 简单循环
1980 计数问题 Java 简单
1035 级数求和 Java 简单
2669 金币 Java 简单
5722 数列求和 Java 简单
5723 质数口袋 Java 中等
1217 回文质数 Java 中等 质数 回文数 算法
1423 小玉在游泳 Java 中等 等差 比 数列 求和
1307 数字翻转 Java 中等 数字翻转 求模运算
5724 求极差 Java 中等 数组排序
1420 最长连号 Java 中等

数组

# 题名 题解 难度 标签
1428 小鱼比可爱 Java 简单 注意数组临界点
1427 小鱼的数字游戏 Java 简单 倒序输出
5727 冰雹猜想 Java 简单 基本算法
1047 校门外的树 Java 简单 0 1 思想去重
5728 旗鼓相当的对手 Java 简单 二维数组 封装函数调用
5729 工艺品制作 Java 简单 0 1 思想去重
2615 神奇的幻方 Java 简单 幻方规律 二维数组移动
5730 【深基5.例10】显示屏 Java 简单 行思想 数组打印
1554 梦中的统计 Java 简单
2141 [NOIP2014 普及组] 珠心算测验 Java 简单
1614 爱与愁的心痛 Java 简单
2911 [USACO08OCT]Bovine Bones G Java 简单
1161 开灯 Java 简单
5731 【深基5.习6】蛇形方阵 Java 简单
5732 【深基5.习7】杨辉三角 Java 简单

字符串

# 题名 题解 难度 标签
5733 【深基6.例1】自动修正 Java 简单
1914 小书童——凯撒密码 Java 简单
1125 [NOIP2008 提高组] 笨小猴 Java 简单
5015 [NOIP2018 普及组] 标题统计 Java 简单
5734 【深基6.例6】文字处理软件 Java 简单
1308 [NOIP2011 普及组] 统计单词数 Java 简单
1765 手机 Java 简单 打表穷举 注意不能写 else 因为 '\n' , '\r'
3741 honoka的键盘 Java 简单 穷举所有 排列情况 然后标记
1321 单词覆盖还原 Java 简单 或 判断三个连续的字母
1553 数字反转(升级版) Java 简单 关键为 识别输入的 数据类型
1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here Java 简单
1597 语句解析 Java 一般 Java 报RE代解决:fire: C++ 没问题

函数与结构体

# 题名 题解 难度 标签
5735 【深基7.例1】距离函数 Java 简单 & 运算符号
5736 【深基7.例2】质数筛 Java 简单 注意复制时 数组下标问题
5737 【深基7.例3】闰年展示 Java 简单 能被4 整除不被100 整除 能被400 整除
5738 【深基7.例4】歌唱比赛 Java 简单 二维矩阵
5739 【深基7.例7】计算阶乘 Java 简单
5461 赦免战俘 Java 中等 递归二维矩阵
5740 【深基7.例9】最厉害的学生 Java 简单 Integer.parseInt(str)
2415 集合求和 Java 简单 找规律
1304 哥德巴赫猜想 Java 一般

暴力枚举

# 题名 题解 难度 标签
2241 统计方形(数据加强版) Java 简单
2089 烤鸡 Java 简单 多重for
1618 三连击(升级版) Java 简单

leetcode

学习

数组 & 字符串

# 题名 题解 难度 标签
14 最长公共前缀 Java 简单 字符串简介
26 删除排序数组中的重复项 Java 简单 总结
27 移除元素 Java 简单 双指针技巧
28 实现 strStr() Java & Python 简单 字符串简介
54 螺旋矩阵 Java & Python 中等 二维数组简介
66 加一 Java & Python 简单 数组简介
67 二进制求和 Java & Python 简单 字符串简介
118 帕斯卡三角形 Java & Python 简单 二维数组简介
119 帕斯卡三角形 II Java & Python 简单 总结
151 翻转字符串里的单词 Java & Python 中等 总结
167 两数之和 II - 输入有序数组 Java & Python 简单 双指针技巧
189 旋转数组 Java & Python 简单 总结
209 长度最小的子数组 Java & Python 中等 双指针技巧
283 移动零 Java & Python 简单 总结
344 反转字符串 Java & Python 简单 双指针技巧
485 最大连续1的个数 Java & Python 简单 双指针技巧
498 对角线遍历 Java & Python 中等 二维数组简介
557 反转字符串中的单词 III Java & Python 简单 总结
561 数组拆分 I Java & Python 简单 双指针技巧
724 寻找数组的中心索引 Java & Python 简单 数组简介
747 至少是其他数字两倍的最大数 Java & Python 简单 数组简介
-
-
-
NULL 简易数组翻转 Java 简单 两种方法

队列 & 栈

# 题名 题解 难度 标签
20 有效的括号 Java & Python 简单 Stack: Last-in-first-out Data Structure
133 Clone Graph Java & Python 中等 Stack and DFS
150 逆波兰表达式求值 Java & Python 中等 Stack: Last-in-first-out Data Structure
155 最小栈 Java & Python 简单 Stack: Last-in-first-out Data Structure
200 岛屿数量 Java & Python 中等 Queue and BFS
225 Implement Stack using Queues Java & Python 简单 总结
232 Implement Queue using Stacks Java & Python 简单 总结
279 完全平方数 Java & Python 中等 Queue and BFS
394 Decode String Java & Python 中等 总结
494 Target Sum Java & Python 中等 Stack and DFS
542 01 Matrix Java & Python 中等 总结
622 Design Circular Queue Java & Python 中等 Queue: First-in-first-out Data Structure
733 Flood Fill Java & Python 简单 总结
739 Daily Temperatures Java & Python 中等 Stack: Last-in-first-out Data Structure
752 Open the Lock Java & Python 中等 Queue and BFS
841 Keys and Rooms Java & Python 中等 总结

链表

# 题名 题解 难度 标签
1 顺序表实现 Java 简单 数据结构
2 链表实现 Java 简单 数据结构
3 双向链表实现 Java 简单 数据结构
# 题名 题解 难度 标签
2 两数相加 Java & Python 中等 总结
19 删除链表的倒数第N个节点 Java & Python 中等 Two Pointer Technique
21 合并两个有序链表 Java & Python 简单 总结
61 旋转链表 Java & Python 中等 总结
138 复制带随机指针的链表 Java & Python 中等 总结
141 环形链表 Java & Python 简单 Two Pointer Technique
142 环形链表 II Java & Python 中等 Two Pointer Technique
160 相交链表 Java & Python 简单 Two Pointer Technique
203 移除链表元素 Java & Python 简单 Classic Problems
206 反转链表 Java & Python 简单 Classic Problems
234 回文链表 Java & Python 简单 Classic Problems
328 奇偶链表 Java & Python 中等 Classic Problems
430 Flatten a Multilevel Doubly 链表 Java & Python 中等 总结
707 Design 链表 Java & Python 简单 Singly 链表

哈希表

# 题名 题解 难度 标签
1 两数之和 Java & Python 简单 Practical Application - Hash Map
3 无重复字符的最长子串 Java & Python 中等 总结
36 有效的数独 Java & Python 中等 Practical Application - Design the Key
49 字母异位词分组 Java & Python 中等 Practical Application - Design the Key
136 只出现一次的数字 Java & Python 简单 Practical Application - Hash Set
202 快乐数 Java & Python 简单 Practical Application - Hash Set
205 Isomorphic Strings Java & Python 简单 Practical Application - Hash Map
217 存在重复元素 Java & Python 简单 Practical Application - Hash Set
219 存在重复元素 II Java & Python 简单 Practical Application - Hash Map
347 前K个高频元素 Java & Python 中等 总结
349 Intersection of Two Arrays Java & Python 简单 Practical Application - Hash Set
350 两个数组的交集 II Java & Python 简单 Practical Application - Hash Map
380 常数时间插入、删除和获取随机元素 Java & Python 中等 总结
387 字符串中的第一个唯一字符 Java & Python 简单 Practical Application - Hash Map
454 4Sum II Java & Python 中等 总结
599 Minimum Index Sum of Two Lists Java & Python 简单 Practical Application - Hash Map
652 Find Duplicate Subtrees Java & Python 中等 Practical Application - Design the Key
705 Design HashSet Java & Python 简单 Design a Hash Table
706 Design HashMap Java & Python 简单 Design a Hash Table
771 Jewels and Stones Java & Python 简单 总结

二分查找

# 题名 题解 难度 标签
4 寻找两个有序数组的中位数 Java & Python 困难 More Practices II
33 搜索旋转排序数组 Java & Python 中等 Template I
34 在排序数组中查找元素的第一个和最后一个位置 Java & Python 中等 Template III
50 Pow(x, n) Java & Python 中等 总结
69 x的平方根 Java & Python 简单 Template I
153 Find Minimum in Rotated Sorted Array Java & Python 中等 Template II
154 Find Minimum in Rotated Sorted Array II Java & Python 困难 More Practices
162 寻找峰值 Java & Python 中等 Template II
167 两数之和 II - 输入有序数组 Java & Python 简单 More Practices
278 第一个错误的版本 Java & Python 简单 Template II
287 Find the Duplicate Number Java & Python 中等 More Practices II
349 Intersection of Two Arrays Java & Python 简单 More Practices
350 两个数组的交集 II Java & Python 简单 More Practices
367 Valid Perfect Square Java & Python 简单 总结
374 Guess Number Higher or Lower Java & Python 简单 Template I
410 Split Array Largest Sum Java & Python 困难 More Practices II
658 Find K Closest Elements Java & Python 中等 Template III
704 Binary Search Java & Python 简单 Background
719 Find K-th Smallest Pair Distance Java & Python 困难 More Practices II
744 Find Smallest Letter Greater Than Target Java & Python 简单 总结

二叉树

# 题名 题解 难度 标签
94 二叉树的中序遍历 Java & Python 中等 树的遍历
101 对称二叉树 Java & Python 简单 运用递归解决树问题
102 二叉树的层次遍历 Java & Python 中等 树的遍历
104 二叉树的最大深度 Java & Python 简单 运用递归解决树问题
105 从前序与中序遍历序列构造二叉树 Java & Python 中等 总结
106 Construct Binary Tree from Inorder and Postorder Traversal Java & Python 中等 总结
112 Path Sum Java & Python 简单 运用递归解决树问题
116 填充每个节点的下一个右侧节点指针 Java & Python 中等 总结
117 Populating Next Right Pointers in Each Node II Java & Python 中等 总结
144 二叉树的前序遍历 Java & Python 中等 树的遍历
145 二叉树的后序遍历 Java & Python 困难 树的遍历
236 二叉树的最近公共祖先 Java & Python 中等 总结
297 二叉树的序列化与反序列化 Java & Python 困难 总结

二叉搜索树

# 题名 题解 难度 标签
98 验证二叉搜索树 Java & Python 中等 Introduction to BST
108 将有序数组转换为二叉搜索树 Java & Python 简单 Appendix: Height-balanced BST
110 Balanced Binary Tree Java & Python 简单 Appendix: Height-balanced BST
173 Binary Search Tree Iterator Java & Python 中等 Introduction to BST
220 Contains Duplicate III Java & Python 中等 总结
235 二叉搜索树的最近公共祖先 Java & Python 简单 总结
450 Delete Node in a BST Java & Python 中等 Basic Operations in BST
700 Search in a Binary Search Tree Java & Python 简单 Basic Operations in BST
701 Insert into a Binary Search Tree Java & Python 中等 Basic Operations in BST
703 Kth Largest Element in a Stream Java & Python 简单 总结

N叉树

# 题名 题解 难度 标签
429 N-ary Tree Level Order Traversal Java & Python 简单 Traversal
559 Maximum Depth of N-ary Tree Java & Python 简单 Recursion
589 N-ary Tree Preorder Traversal Java & Python 简单 Traversal
590 N-ary Tree Postorder Traversal Java & Python 简单 Traversal

前缀树

# 题名 题解 难度 标签
208 实现 Trie (前缀树) Java & Python 中等 Basic Operations
211 Add and Search Word - Data structure design Java & Python 中等 Practical Application I
212 单词搜索 II Java & Python 困难 Practical Application II
336 Palindrome Pairs Java & Python 困难 Practical Application II
421 Maximum XOR of Two Numbers in an Array Java & Python 中等 Practical Application II
648 Replace Words Java & Python 中等 Practical Application I
677 Map Sum Pairs Java & Python 中等 Practical Application I

决策树

# 题名 题解 难度 标签
### Calculate Entropy Java & Python 简单 Implementation
### Calculate Maximum Information Gain Java & Python 简单 Implementation

递归 I

# 题名 题解 难度 标签
21 合并两个有序链表 Java & Python 简单 总结
24 Swap Nodes in Pairs Java & Python 中等 Principle of Recursion
50 Pow(x, n) Java & Python 中等 Complexity Analysis
70 爬楼梯 Java & Python 简单 Memoization
95 Unique Binary Search Trees II Java & Python 中等 总结
104 二叉树的最大深度 Java & Python 简单 Complexity Analysis
118 帕斯卡三角形 Java & Python 简单 Recurrence Relation
119 帕斯卡三角形 II Java & Python 简单 Recurrence Relation
206 反转链表 Java & Python 简单 Recurrence Relation
344 反转字符串 Java & Python 简单 Principle of Recursion
509 Fibonacci Number Java & Python 简单 Memoization
779 K-th Symbol in Grammar Java & Python 中等 总结

递归 II

# 题名 题解 难度 标签
17 电话号码的字母组合 Java & Python 中等 总结
22 括号生成 Java & Python 中等 Recursion to Iteration
37 Sudoku Solver Java & Python 困难 Backtracking
46 全排列 Java & Python 中等 总结
52 N-Queens II Java & Python 困难 Backtracking
77 Combinations Java & Python 中等 Backtracking
84 柱状图中最大的矩形 Java & Python 困难 总结
94 二叉树的中序遍历 Java & Python 中等 Recursion to Iteration
98 验证二叉搜索树 Java & Python 中等 Divide and Conquer
100 Same Tree Java & Python 简单 Recursion to Iteration
102 二叉树的层次遍历 Java & Python 中等 Recursion to Iteration
218 天际线问题 Java & Python 困难 总结
240 搜索二维矩阵 II Java & Python 中等 Divide and Conquer
912 Sort an Array Java & Python 中等 Divide and Conquer

并发

# 题名 题解 难度 标签
1114 Print in Order Java & Python 简单 Concurrency
1115 Print FooBar Alternately Java & Python 中等 Concurrency
1116 Print Zero Even Odd Java & Python 中等 Concurrency
1117 Building H2O Java & Python 中等 Concurrency
1195 Fizz Buzz Multithreaded Java & Python 中等 Concurrency
1226 The Dining Philosophers Java & Python 中等 Concurrency

脚本

# 题名 题解 难度 标签
192 Word Frequency bash 中等 Shell
193 Valid Phone Numbers bash 简单 Shell
194 Transpose File bash 中等 Shell
195 Tenth Line bash 简单 Shell

数据库

# 题名 题解 难度 标签
175 Combine Two Tables MySQL 简单 Database
176 第二高的薪水 MySQL 简单 Database
177 Nth Highest Salary MySQL 中等 Database
178 Rank Scores MySQL 中等 Database
180 Consecutive Numbers MySQL 中等 Database
181 Employees Earning More Than Their Managers MySQL 简单 Database
182 Duplicate Emails MySQL 简单 Database
183 Customers Who Never Order MySQL 简单 Database
184 Department Highest Salary MySQL 中等 Database
185 Department Top Three Salaries MySQL 困难 Database
196 Delete Duplicate Emails MySQL 简单 Database
197 Rising Temperature MySQL 简单 Database
262 Trips and Users MySQL 困难 Database
595 Big Countries MySQL 简单 Database
596 Classes More Than 5 Students MySQL 简单 Database
601 Human Traffic of Stadium MySQL 困难 Database
620 Not Boring Movies MySQL 简单 Database
626 Exchange Seats MySQL 中等 Database
627 Swap Salary MySQL 简单 Database

排序算法

# 题名 题解 难度 标签
Sort 6 堆排序 Java & Python 中等 排序算法
Sort 7 桶排序 Java & Python 简单 排序算法
# 题名 题解 难度 标签
Sort 1 冒泡排序 Java ) 简单 排序算法
Sort 2 选择排序 Java ) 简单 排序算法
Sort 3 插入排序 Java ) 简单 排序算法
Sort 4 希尔排序 Java ) 简单 排序算法
Sort 5 归并排序 Java ) 简单 排序算法
Sort 6 快速排序 Java ) 简单 排序算法

学习讲解链接1 学习讲解链接2

搜索算法

# 题名 题解 难度 标签
Search 1 二分搜索 Java & Python 简单 搜索算法
Search 2 插值搜索 Java & Python 简单 搜索算法
Search 3 顺序搜索 Java & Python 简单 搜索算法

面试

常见面试题

简单问题

# 题名 题解 难度 标签
1 两数之和 Java & Python 简单 数组
7 整数反转 Java & Python 简单 字符串
8 字符串转换整数(atoi) Java & Python 中等 字符串
13 罗马数字转整数 Java & Python 简单 数学
14 最长公共前缀 Java & Python 简单 字符串
19 删除链表的倒数第N个节点 Java & Python 中等 链表
20 有效的括号 Java & Python 简单 其他
21 合并两个有序链表 Java & Python 简单 链表
26 删除排序数组中的重复项 Java & Python 简单 数组
28 实现 strStr() Java & Python 简单 字符串
36 有效的数独 Java & Python 中等 数组
38 外观数列 Java & Python 简单 字符串
48 旋转图像 Java & Python 中等 数组
53 最大子序和 Java & Python 简单 动态规划
66 加一 Java & Python 简单 数组
70 爬楼梯 Java & Python 简单 动态规划
88 合并两个有序数组 Java & Python 简单 排序和搜索
98 验证二叉搜索树 Java & Python 中等
101 对称二叉树 Java & Python 简单
102 二叉树的层次遍历 Java & Python 中等
104 二叉树的最大深度 Java & Python 简单
108 将有序数组转换为二叉搜索树 Java & Python 简单
118 帕斯卡三角形 Java & Python 简单 其他
121 买卖股票的最佳时机 Java & Python 简单 动态规划
122 买卖股票的最佳时机 II Java & Python 简单 数组
125 验证回文串 Java & Python 简单 字符串
136 只出现一次的数字 Java & Python 简单 数组
141 环形链表 Java & Python 简单 链表
155 最小栈 Java & Python 简单 设计问题
189 旋转数组 Java & Python 简单 数组
190 颠倒二进制位 Java & Python 简单 其他
191 位1的个数 Java & Python 简单 其他
198 打家劫舍 Java & Python 简单 动态规划
204 计数质数 Java & Python 简单 数学
206 反转链表 Java & Python 简单 链表
217 存在重复元素 Java & Python 简单 数组
234 回文链表 Java & Python 简单 链表
237 删除链表中的节点 Java & Python 简单 链表
242 有效的字母异位词 Java & Python 简单 字符串
268 缺失数字 Java & Python 简单 其他
278 第一个错误的版本 Java & Python 简单 排序和搜索
283 移动零 Java & Python 简单 数组
326 3的幂 Java & Python 简单 数学
344 反转字符串 Java & Python 简单 字符串
350 两个数组的交集 II Java & Python 简单 数组
384 打乱数组 Java & Python 中等 设计问题
387 字符串中的第一个唯一字符 Java & Python 简单 字符串
412 Fizz Buzz Java & Python 简单 数学
461 汉明距离 Java & Python 简单 其他

中等问题

# 题名 题解 难度 标签
2 两数相加 Java & Python 中等 链表
3 无重复字符的最长子串 Java & Python 中等 数组和字符串
5 最长回文子串 Java & Python 中等 数组和字符串
15 三数之和 Java & Python 中等 数组和字符串
17 电话号码的字母组合 Java & Python 中等 回溯算法
22 括号生成 Java & Python 中等 回溯算法
29 两数相除 Java & Python 中等 数学
33 搜索旋转排序数组 Java & Python 中等 排序和搜索
34 在排序数组中查找元素的第一个和最后一个位置 Java & Python 中等 排序和搜索
46 全排列 Java & Python 中等 回溯算法
49 字母异位词分组 Java & Python 中等 数组和字符串
50 Pow(x, n) Java & Python 中等 数学
55 跳跃游戏 Java & Python 中等 动态规划
56 合并区间 Java & Python 中等 排序和搜索
62 不同路径 Java & Python 中等 动态规划
69 x的平方根 Java & Python 简单 数学
73 矩阵置零 Java & Python 中等 数组和字符串
75 颜色分类 Java & Python 中等 排序和搜索
78 子集 Java & Python 中等 回溯算法
79 单词搜索 Java & Python 中等 回溯算法
94 二叉树的中序遍历 Java & Python 中等 树和图
103 二叉树的锯齿形层次遍历 Java & Python 中等 树和图
105 从前序与中序遍历序列构造二叉树 Java & Python 中等 树和图
116 填充每个节点的下一个右侧节点指针 Java & Python 中等 树和图
150 逆波兰表达式求值 Java & Python 中等 其他
160 相交链表 Java & Python 简单 链表
162 寻找峰值 Java & Python 中等 排序和搜索
166 分数到小数 Java & Python 中等 数学
169 多数元素 Java & Python 简单 其他
171 Excel表列序号 Java & Python 简单 数学
172 阶乘后的零 Java & Python 简单 数学
200 岛屿数量 Java & Python 中等 树和图
202 快乐数 Java & Python 简单 数学
215 数组中的第K个最大元素 Java & Python 中等 排序和搜索
230 二叉搜索树中第K小的元素 Java & Python 中等 树和图
240 搜索二维矩阵 II Java & Python 中等 排序和搜索
297 二叉树的序列化与反序列化 Java & Python 困难 设计问题
300 最长上升子序列 Java & Python 中等 动态规划
322 零钱兑换 Java & Python 中等 动态规划
328 奇偶链表 Java & Python 中等 链表
334 递增的三元子序列 Java & Python 中等 数组和字符串
347 前K个高频元素 Java & Python 中等 排序和搜索
371 两整数之和 Java & Python 简单 其他
380 常数时间插入、删除和获取随机元素 Java & Python 中等 设计问题
621 任务调度器 Java & Python 中等 其他

困难问题

# 题名 题解 难度 标签
4 寻找两个有序数组的中位数 Java & Python 困难 排序和搜索
10 正则表达式匹配 Java & Python 困难 回溯算法
11 盛最多水的容器 Java & Python 中等 数组和字符串
23 合并K个排序链表 Java & Python 困难 链表
41 缺失的第一个正数 Java & Python 困难 数组和字符串
42 接雨水 Java & Python 困难 其他
44 通配符匹配 Java & Python 困难 回溯算法
54 螺旋矩阵 Java & Python 中等 数组和字符串
76 最小覆盖子串 Java & Python 困难 数组和字符串
84 柱状图中最大的矩形 Java & Python 困难 其他
91 解码方法 Java & Python 中等 动态规划
124 二叉树中的最大路径和 Java & Python 困难 树和图
127 单词接龙 Java & Python 中等 树和图
128 最长连续序列 Java & Python 困难 数组和字符串
130 被围绕的区域 Java & Python 中等 树和图
131 分割回文串 Java & Python 中等 回溯算法
138 复制带随机指针的链表 Java & Python 中等 链表
139 单词拆分 Java & Python 中等 动态规划
140 单词拆分 II Java & Python 困难 动态规划
146 LRU缓存机制 Java & Python 中等 设计问题
148 排序链表 Java & Python 中等 链表
149 直线上最多的点数 Java & Python 困难 数学
152 乘积最大子序列 Java & Python 中等 动态规划
179 最大数 Java & Python 中等 数学
207 课程表 Java & Python 中等 树和图
208 实现 Trie (前缀树) Java & Python 中等 设计问题
210 课程表 II Java & Python 中等 树和图
212 单词搜索 II Java & Python 困难 回溯算法
218 天际线问题 Java & Python 困难 其他
227 基本计算器 II Java & Python 中等 数组和字符串
236 二叉树的最近公共祖先 Java & Python 中等 树和图
238 除自身以外数组的乘积 Java & Python 中等 数组和字符串
239 滑动窗口最大值 Java & Python 困难 数组和字符串
279 完全平方数 Java & Python 中等 动态规划
287 寻找重复数 Java & Python 中等 数组和字符串
289 生命游戏 Java & Python 中等 数组和字符串
295 数据流的中位数 Java & Python 困难 设计问题
301 删除无效的括号 Java & Python 困难 回溯算法
309 最佳买卖股票时机含冷冻期 Java & Python 中等 动态规划
312 戳气球 Java & Python 困难 动态规划
315 计算右侧小于当前元素的个数 Java & Python 困难 树和图
324 摆动排序 II Java & Python 中等 排序和搜索
329 矩阵中的最长递增路径 Java & Python 困难 树和图
341 扁平化嵌套列表迭代器 Java & Python 中等 设计问题
378 有序矩阵中第K小的元素 Java & Python 中等 排序和搜索
406 根据身高重建队列 Java & Python 中等 其他
454 四数相加 II Java & Python 中等 数组和字符串
547 朋友圈 Java & Python 中等 树和图

字节跳动

# 题名 题解 难度 标签
2 两数相加 Java & Python 中等 链表与树
3 无重复字符的最长子串 Java & Python 中等 挑战字符串
14 最长公共前缀 Java & Python 简单 挑战字符串
15 三数之和 Java & Python 中等 数组与排序
21 合并两个有序链表 Java & Python 简单 链表与树
23 合并K个排序链表 Java & Python 困难 链表与树
33 搜索旋转排序数组 Java & Python 中等 数组与排序
42 接雨水 Java & Python 困难 数组与排序
43 字符串相乘 Java & Python 中等 挑战字符串
53 最大子序和 Java & Python 简单 动态或贪心
56 合并区间 Java & Python 中等 数组与排序
60 第k个排列 Java & Python 中等 数组与排序
69 x的平方根 Java & Python 简单 拓展练习
71 简化路径 Java & Python 中等 挑战字符串
93 复原IP地址 Java & Python 中等 挑战字符串
103 二叉树的锯齿形层次遍历 Java & Python 中等 链表与树
120 三角形最小路径和 Java & Python 中等 动态或贪心
121 买卖股票的最佳时机 Java & Python 简单 动态或贪心
122 买卖股票的最佳时机 II Java & Python 简单 动态或贪心
128 最长连续序列 Java & Python 困难 数组与排序
142 环形链表 II Java & Python 中等 链表与树
146 LRU缓存机制 Java & Python 中等 数据结构
148 排序链表 Java & Python 中等 链表与树
151 翻转字符串里的单词 Java & Python 中等 挑战字符串
155 最小栈 Java & Python 简单 数据结构
160 相交链表 Java & Python 简单 链表与树
176 第二高的薪水 MySQL 简单 拓展练习
206 反转链表 Java & Python 简单 链表与树
215 数组中的第K个最大元素 Java & Python 中等 数组与排序
221 最大正方形 Java & Python 中等 动态或贪心
236 二叉树的最近公共祖先 Java & Python 中等 链表与树
354 俄罗斯套娃信封问题 Java & Python 困难 动态或贪心
393 UTF-8 编码验证 Java & Python 中等 拓展练习
432 全 O(1) 的数据结构 Java & Python 困难 数据结构
547 朋友圈 Java & Python 中等 数组与排序
567 字符串的排列 Java & Python 中等 挑战字符串
674 最长连续递增序列 Java & Python 简单 数组与排序
695 岛屿的最大面积 Java & Python 中等 数组与排序

腾讯

# 题名 题解 难度 标签
1 两数之和 Java & Python 简单 数组与字符串
2 两数相加 Java & Python 中等 链表突击
4 寻找两个有序数组的中位数 Java & Python 困难 数组与字符串
5 最长回文子串 Java & Python 中等 数组和字符串
7 整数反转 Java & Python 简单 数学与数字
8 字符串转换整数(atoi) Java & Python 中等 数组与字符串
9 回文数 Java & Python 简单 数学与数字
11 盛最多水的容器 Java & Python 中等 数组与字符串
14 最长公共前缀 Java & Python 简单 数组与字符串
15 三数之和 Java & Python 中等 数组与字符串
16 最接近的三数之和 Java & Python 中等 数组与字符串
20 有效的括号 Java & Python 简单 数组与字符串
21 合并两个有序链表 Java & Python 简单 链表突击
22 括号生成 Java & Python 中等 回溯算法
23 合并K个排序链表 Java & Python 困难 链表突击
26 删除排序数组中的重复项 Java & Python 简单 数组与字符串
33 搜索旋转排序数组 Java & Python 中等 排序与搜索
43 字符串相乘 Java & Python 中等 数组与字符串
46 全排列 Java & Python 中等 回溯算法
53 最大子序和 Java & Python 简单 动态规划
54 螺旋矩阵 Java & Python 中等 数组和字符串
59 螺旋矩阵 II Java & Python 中等 数组和字符串
61 旋转链表 Java & Python 中等 链表突击
62 不同路径 Java & Python 中等 动态规划
70 爬楼梯 Java & Python 简单 动态规划
78 子集 Java & Python 中等 回溯算法
88 合并两个有序数组 Java & Python 简单 数组和字符串
89 格雷编码 Java & Python 中等 回溯算法
104 二叉树的最大深度 Java & Python 简单 排序与搜索
121 买卖股票的最佳时机 Java & Python 简单 动态规划
122 买卖股票的最佳时机 II Java & Python 简单 动态规划
124 二叉树中的最大路径和 Java & Python 困难 排序与搜索
136 只出现一次的数字 Java & Python 简单 数学与数字
141 环形链表 Java & Python 简单 链表突击
142 环形链表 II Java & Python 中等 链表突击
146 LRU缓存机制 Java & Python 中等 设计
148 排序链表 Java & Python 中等 排序与搜索
155 最小栈 Java & Python 简单 设计
160 相交链表 Java & Python 简单 链表突击
169 多数元素 Java & Python 简单 数学与数字
206 反转链表 Java & Python 简单 链表突击
215 数组中的第K个最大元素 Java & Python 中等 排序与搜索
217 存在重复元素 Java & Python 简单 数组和字符串
230 二叉搜索树中第K小的元素 Java & Python 中等 排序与搜索
231 2的幂 Java & Python 简单 数学与数字
235 二叉搜索树的最近公共祖先 Java & Python 简单 排序与搜索
236 二叉树的最近公共祖先 Java & Python 中等 排序与搜索
237 删除链表中的节点 Java & Python 简单 链表突击
238 除自身以外数组的乘积 Java & Python 中等 数组和字符串
292 Nim 游戏 Java & Python 简单 附加
344 反转字符串 Java & Python 简单 数组和字符串
557 反转字符串中的单词 III Java & Python 简单 数组和字符串

猿题库

# 题名 题解 难度 标签
369 单链表加1 Java & Python 中等 链表

搜狗

# 题名 题解 难度 标签
168 Excel表列名称 Java & Python 简单 数学
171 Excel表列序号 Java & Python 简单 数学

美团点评

# 题名 题解 难度 标签
2 两数相加 Java & Python 中等 链表
43 字符串相乘 Java & Python 中等 字符串
74 搜索二维矩阵 Java & Python 中等 数组
108 将有序数组转换为二叉搜索树 Java & Python 简单
109 有序链表转换二叉搜索树 Java & Python 中等
240 搜索二维矩阵 II Java & Python 中等 数组
415 字符串相加 Java & Python 简单 字符串

跟谁学

# 题名 题解 难度 标签
19 删除链表的倒数第N个节点 Java & Python 中等 链表
203 移除链表元素 Java & Python 简单 链表
215 数组中的第K个最大元素 Java & Python 中等 排序和搜索
230 二叉搜索树中第K小的元素 Java & Python 中等 排序与搜索
378 有序矩阵中第K小的元素 Java & Python 中等 排序和搜索

学习计划

20天算法刷题计划

# 题名 题解 难度 标签
第一天 最长公共前缀 Java 简单 字符串简介

TheBuleCup


往届试题

2020第十一届省赛

# 题名 题解 难度 标签
A 解密 Java 简单
B 纪念日 Java 简单
C 合并检测 Java 简单
D 分配口罩 Java 简单
E 斐波那契数列最大公约数 Java 简单
F 分类计数 Java 简单
G 八次求和 Java 简单
H 字符串编码 Java 简单
I BST 插入节点问题 Java 简单
J 网络分析 Java 简单

2020第十一届省模拟赛

# 题名 题解 难度 标签
A 计算机存储中有多少字节 Java 简单
B 合法括号序列 Java 简单
C 无向连通图最少包含多少条边 Java 简单
D 字母重新排列 Java 简单
E 凯撒密码加密 Java 简单
F 反倍数 Java 简单
G 正整数的摆动序列 Java 简单
H 螺旋矩阵 Java 简单
I 小明植树 Java 简单
J 户户通电 Java 简单

About

DataStructure-Java for The Bule cup and leetcode Solutions 🌈

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages