本专栏每日更新,欢迎大家三连加订阅
这个文档主要用来汇总刷过的不同类型的题目
另外如果一个题目涉及到多个方面的技术会在所有相关的技术下面列出这个题目,方便想突破一个技术问题的同学
其中难度分为三种:
- ⭐️:简单,签到题或者纯模板题
- ⭐️ ⭐️:中等,看题可以想到用什么方法,但是可能需要处理一些小细节
- ⭐️ ⭐️ ⭐️:困难,看一眼整个人都是懵的,要仔细思考才能做出来的
本文由个人维护,如果发现有任何问题,欢迎大家评论区指出
数据结构
数组
链接 | 难度 | 描述 |
---|---|---|
巧排扑克牌 | ⭐️⭐️ | 按照题目模拟,注意细节问题 |
字符串
链接 | 难度 | 描述 |
---|---|---|
队列
链接 | 难度 | 描述 |
---|---|---|
栈
链接 | 难度 | 描述 |
---|---|---|
哈希
链接 | 难度 | 描述 |
---|---|---|
每日一题训练----字符串哈希 (4.10) | ⭐️ | 熟悉哈希集合的简单题目 |
排他平方数 | ⭐️ | 使用哈希集合去重 |
买不到的数目 | ⭐️ | 使用了动态规划的思想,使用哈希集合加快查找速度 |
日志统计 | ⭐️⭐️ | 按照题目模拟,使用哈希表提升查找速度 |
神奇的算式 | ⭐️ | 按照题目模拟,使用哈希表提升查找速度 |
最大乘积 | ⭐️ | 按照题目模拟,与神奇的算式类似 |
树
链接 | 难度 | 描述 |
---|---|---|
每日一题----美国血统 American Heritage(4.12) | ⭐️⭐️ | 根据中序遍历和前序遍历得到后续遍历序列 |
并查集
链接 | 难度 | 描述 |
---|---|---|
每日一题----亲戚 (4.11) | ⭐️ | 并查集模板题,入门必看 |
蓝桥幼儿园 | ⭐️ | 和上面的那个差不多,也是模板题,可以自己写一遍练练手 |
算法
递归
链接 | 难度 | 描述 |
---|---|---|
每日一题----美国血统 American Heritage(4.12) | ⭐️⭐️ | 根据中序遍历和前序遍历得到后续遍历序列 |
DFS(回溯法)
这里的题一般都不是很难,只需要记住子集树和排列树的模板,然后修改check
函数即可
如果不加剪枝的话就相当于是暴力搜索,加上剪枝可以减少搜索明显不符合条件的情况
// 子集树:
void Backtrack (int t){
if (t>n)
check(x);
else
for (int i=0; i<=1; i++){
x[t]=i;
if (Constraint(t)&&Bound(t))
Backtrack(t+1);
}
}
// 排列树
void Backtrack (int t){
if (t>n)
Output(x);
else
for (int i=t; i<=n; i++){
Swap(x[t], x[i]);
if (Constraint(t)&&Bound(t))
Backtrack(t+1);
Swap(x[t], x[i]);
}
}
链接 | 难度 | 描述 |
---|---|---|
纸牌三角形 | ⭐️ | 求出所有1-9的所有排列然后判断是否满足条件 |
带分数 | ||
BFS
使用BFS可以求一下题目:
- 求在规定步数内可以到达的结点
- 求到达目标点的最短路径或者步数
// todo:BFS模板
链接 | 难度 | 描述 |
---|---|---|
灌溉 | ⭐️ | 搜索在规定步数内可以到达的位置 |
迷宫 | ⭐️ | 求到达目标点的最短路径 |
走迷宫 | ⭐️ | 和上面的差不多,只不过不需要路径,只需要最少步数就行 |
全球变暖 | ⭐️⭐️ | 比上面直接套模板的题难一点,使用的是一种BFS遍历的思想 |
青蛙跳杯子 | ⭐️ | BFS模拟每次跳跃结果 |
动态规划
链接 | 难度 | 描述 |
---|---|---|
买不到的数目 | ⭐️ | 使用了动态规划的思想,使用哈希集合加快查找速度 |
取球游戏 | ⭐️⭐️ | 轮流取球,拿到最后一个球失败 |
包子凑数 | ⭐️ | 01背包问题 |
夺宝奇兵 | ⭐️ | 类似于数字三角形的动态规划问题 |
贪心
链接 | 难度 | 描述 |
---|---|---|
积木大赛 | ⭐️⭐️ | 一次取一层或者取一个,直到拿完所有的 |
打水问题 | ⭐️ | 排序后让用时最少的人先打,所有人的等待时间最短 |
二分法
链接 | 难度 | 描述 |
---|---|---|
扫地机器人 | ⭐️⭐️ | |
模拟
链接 | 难度 | 描述 |
---|---|---|
年龄巧合 | ⭐️ | 遍历所有符合条件的日期求答案 |
奇数倍数 | ⭐️ | 按照题意模拟即可 |
猴子分香蕉 | ⭐️ | 按照题意模拟即可 |
巧排扑克牌 | ⭐️⭐️ | 按照题目模拟,注意细节问题 |
日志统计 | ⭐️⭐️ | 按照题目模拟,使用哈希表提升查找速度 |
缩位求和 | ⭐️ | 按照题目要求模拟 |
机器人行走 | ⭐️ | 按照题目要求模拟 |
天干地支 | ⭐️ | 按照要求模拟 |
一步之遥 | ⭐️ | 按照要求模拟 |
其他
链接 | 难度 | 描述 |
---|---|---|
纯质数 | ⭐️ | 欧式筛法快速求质数 |
最少砝码 | ⭐️⭐️ | 根据题目描述求得递推公式求得结果 |
约瑟夫环 | ⭐️⭐️ | 求约瑟夫环的解 |
第几个幸运数字 | ⭐️ | 暴力遍历求解 |
四平方和 | ⭐️ | 暴力遍历求解 |
平方序列 | ⭐️ | 暴力遍历求解 |
等差数列 | ⭐️ | 先求公差,然后求结果 |
相乘 | ⭐️ | 暴力遍历求解 |
阶乘约数(数学) | ⭐️ | 唯一分解定律 |
数的幂次 | ⭐️ | 快速幂 |
求值 | ⭐️ | 暴力遍历求解 |
日期类
这里我用过Calendar
类和LocalDate
类,个人感觉LocalDate
更简单一点
链接 | 难度 | 描述 |
---|---|---|
回文日期 | ⭐️ | 遍历所有日期求回文日期,使用Calendar 类 |
含2天数 | ⭐️ | 遍历范围内的所有日期,使用的是LocalData 类 |