冲刺大厂之 Java 刷题总结
Posted 南淮北安
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冲刺大厂之 Java 刷题总结相关的知识,希望对你有一定的参考价值。
将该专栏的题目刷完,仔细学习整理,冲刺大厂没问题加油!!!!
文章目录
一、数组
序号 | 题目 | 知识点 |
---|---|---|
01 | 关于数组你不得不知道的事 | 数组方法总结 |
35 | 搜索插入位置 | 二分法总结 |
27 | 移除元素 | 双指针法 |
209 | 长度最小的子数组 | 滑动窗口 |
59 | 螺旋矩阵 II | 模拟数组,关键确定边界条件 |
二、链表
序号 | 题目 | 知识点 |
---|---|---|
01 | 链表基础知识 | 链表 |
203 | 移除链表元素 | 链表引入虚拟头结点 |
707 | 设计链表 | 虚拟头节点,链表基本操作 |
206 | 翻转链表 | 双指针 |
19 | 删除链表的倒数第 N 个结点 | 虚拟头结点,双指针 |
142 | 环形链表 II | 双指针,快慢指针差为什么是1 |
25 | K 个一组翻转链表 | |
141 | 链表问题 | 快慢指针、判断环、计算环的长度 |
三、哈希表
序号 | 题目 | 知识点 |
---|---|---|
01 | 关于哈希表,你不得不知道的事情 | 哈希表基础知识 |
242 | 有效的字母异位词 | 数组哈希表 |
349 | 两个数组的交集 | set 集合哈希表 |
202 | 快乐数 | set 集合哈希表 |
1 | 两数之和 | map 集合 |
454 | 四数相加 II | map 集合 |
383 | 赎金信 | 数组哈希表 |
41 | 缺失的第一个正数 | 原地哈希 |
四、字符串
序号 | 题目 | 知识点 |
---|---|---|
541 | 反转字符串 II | 优化for循环,字符数组转字符串 |
剑指offer 05 | 替换空格 | 字符的比较 |
151 | 翻转字符串 | 字符串相关API,集合翻转 |
剑指offer 58 | 左旋转字符串 | 字符串的截取 |
05 | KMP 理论 | KMP |
06 | 实现 strStr() | KMP具体实现 |
459 | 重复的子字符串 | KMP 应用 |
五、双指针法
序号 | 题目 | 知识点 |
---|---|---|
01 | 双指针 | 应用在数组或者字符串或者链表 |
15 | 三数之和 | 双指针,数组转为列表Arrays.asList(1,2,3); |
18 | 四数之和 | 双指针 |
六、栈与队列
序号 | 题目 | 知识点 |
---|---|---|
01 | 关于队列和栈你不得不知道的事 | 栈和队列 |
232 | 用栈实现队列 | 栈 |
225 | 用队列实现栈 | 队列 |
20 | 有效的括号 | 栈 |
1047 | 删除字符串中的所有相邻重复项 | 栈,栈转为字符串 |
150 | 逆波兰表达式求值 | 栈 |
239 | 滑动窗口最大值 | 单调队列 |
347 | 前 K 个高频元素 | 优先级队列 |
09 | 表达式计算 | 双栈计算 |
七、二叉树
力扣序号 | 题目 | 知识点 |
---|---|---|
01 | 关于二叉树,你不得不知道的事情 | 二叉树 |
02 | 原来二叉树中的递归这么简单 | 二叉树递归遍历 |
03 | 原来二叉树中的非递归这么简单 !!! | 二叉树非递归遍历 |
04 | 前后中序遍历统一写法 | 上面的非递归已经够用 |
102&107&199&637&429 | 层序遍历、右视图、层平均值、N叉树的层序遍历 | 二叉树层序遍历,List 集合翻转 |
226 | 翻转二叉树 | 前序遍历,递归,非递归,层序遍历 |
101 | 对称二叉树 | 递归,迭代 |
104&559 | 二叉树的最大深度 | 二叉树的最大深度,N叉树的最大深度 |
111 | 二叉树的最小深度 | 递归,迭代 |
222 | 完全二叉树的节点个数 | 递归,迭代 |
110 | 平衡二叉树 | 递归 |
257 | 二叉树的所有路径 | 递归,迭代,回溯 |
100 | 相同的树 | 递归 |
404 | 左叶子之和 | 递归,迭代 |
513 | 找左下角的值 | 迭代,递归 |
112&113 | 终于搞明白了二叉树的递归函数是否需要返回值 !!! | 递归函数是否需要返回值 |
106&105 | 构造二叉树也可以如此简单 !!! | 构造二叉树 |
654 | 最大二叉树 | 递归,处理数组下标 |
617 | 合并两个二叉树 | 递归 |
700 | 二叉搜索树中的搜索 | 二叉搜索树,递归,迭代 |
98 | 验证二叉搜索树 | 中序遍历,递归,迭代 |
530 | 二叉搜索树的最小绝对差 | 中序遍历,递归,迭代 |
501 | 二叉搜索树中的众数 | 中序遍历,递归 |
236 | 二叉树的最近公共祖先 | 后序遍历处理逻辑 |
235 | 二叉搜索树的最近公共祖先 | 前序遍历处理逻辑 |
701 | 二叉搜索树中的插入操作 | 递归,迭代 |
450 | 删除二叉搜索树中的节点 | 递归,删除节点 |
669 | 修剪二叉搜索树 | 递归 |
108 | 将有序数组转换为二叉搜索树 | 递归,二叉搜索树特性 |
538 | 把二叉搜索树转换为累加树 | 递归,发现规律,前驱 |
补充 | 二叉树的深度 | DFS,BFS |
注解:
递归函数如果需要遍历所有的路径,则不需要返回值,类似回溯的写法,如果找其中满足条件的一个路径即可,则需要返回值
八、回溯法
序号 | 题目 | 知识点 |
---|---|---|
01 | 关于回溯算法,你不得不知道的事情 | 回溯法模板 |
77 | 组合 | 回溯,剪枝优化 |
216 | 组合总和 | 回溯,剪枝优化 |
17 | 电话号码的字母组合 | 回溯,字符串 StringBuilder |
39 | 组合总和 I | 回溯,剪枝优化 |
40 | 组合总和 II | 回溯,标志数组 |
131 | 分割回文串 | 回溯,切割问题 |
93 | 复原 IP 地址 | 回溯,切割,判断子字符串 |
78 | 子集 | 回溯 |
90 | 子集II | 回溯,标志数组 |
491 | 递增子序列 | 回溯,去重,set 集合 |
46 | 全排列 | 回溯,标识数组 |
47 | 全排列II | 标志数组,去重 |
332 | 重新安排行程 | 待解 |
51 | N 皇后 | 引入二维数组记录存储的情况 |
37 | 解数独 | 二维递归 |
注解
如果是组合:backTracking(arr,i+1); 表示元素不可重复选取
如果是排列:backTracking(arr,i); 表示元素可以重复选取
如果要求不允许有重复的组合出现:可以设置 boolean 数组,表示每个数据是否已经被选用
比如1,1,7 只允许出现一个 1,7
九、贪心算法
序号 | 题目 | 知识点 |
---|---|---|
01 | 关于贪心算法,你不得不知道的事情 | 贪心算法思路 |
455 | 分发饼干 | 贪心算法 |
376 | 摆动序列 | 贪心算法 |
53 | 最大子序列和 | 贪心算法 |
122 | 买卖股票的最佳时机 II | 贪心算法,动态规划 |
55 | 跳跃游戏 | 贪心算法 |
45 | 跳跃游戏 II | |
1005 | K次取反后最大化的数组和 | 贪心算法,数组自定义排序 |
134 | 加油站 | 贪心算法 |
678 | 有效的括号字符串 | 贪心 |
135 | 分发糖果 | 从左到右,从右到左 |
406 | 根据身高重建队列 | 两个维度 |
452 | 用最少数量的箭引爆气球 | 贪心,重叠数组 |
435 | 无重叠的区间 | 二维数组排序,贪心 |
763 | 划分字母区间 | 遍历,更新右边界 |
56 | 合并区间 | 左边界排序,遍历 |
714 | 买卖股票的最佳时机含手续费 | 贪心 |
968 | 监控二叉树 |
十、动态规划
序号 | 题目 | 知识点 |
---|---|---|
01 | 关于动态规划,你不得不知道的事情 | 动态规划思想 |
509 | 斐波那契数列 | 动态规划 |
剑指offer | 爬台阶 | 动态规划 |
746 | 最小花费爬楼梯 | 动态规划 |
62 | 不同的路径 | 动态规划 |
63 | 不同的路径 II | 动态规划 |
343 | 整数拆分 | 动态规划 |
96 | 不同的二叉搜索树 | 动态规划 |
09 | 关于背包问题,你不得不知道的事情 | 背包问题 |
416 | 分割等和子集 | 背包问题, |
1049 | 最后一块石头的重量 II | 背包问题 |
494 | 求解目标和 | 背包问题 |
474 | 一和零 | 背包问题 |
14 | 关于完全背包,你不得不知道的事? | 完全背包问题 |
518 | 零钱兑换II | 完全背包,组合问题 |
377 | 组合总和 IV | 完全背包,排列问题 |
17 | 爬台阶 | 完全背包,排列问题 |
322 | 零钱兑换 | 完全背包,组合问题,最小数 |
279 | 完全平方数 | 完全背包,组合问题,最小数 |
139 | 单词拆分 | 完全背包 |
198 | 打家劫舍 | 常规动态规划 |
213 | 打家劫舍II | 动态规划 |
337 | 打家劫舍III | |
123 | 买卖股票的最佳时机 III | |
309 | 最佳股票时机含冷冻期 | |
300 | 最长递增子序列 | 数组参数初始化赋值 |
674 | 最长连续递增序列 | |
718 | 最长重复子数组 | 处理二维数组赋初值的情况 |
1143&1035&392&583 | 最长公共子序列&不相交的线&判断子序列&两个字符串的删除操作 | |
72 | 编辑距离 | |
647 | 回文子串 | |
5 | 最长回文子串 | 子序列 |
516 | 最长回文子序列 |
注解:
完全背包:
- 组合:元素之间不要求顺序,先遍历物品在遍历容量,如果每个物品可以多次使用则正序遍历容量
- 排列:元素之间要求顺序,先遍历容量,再遍历物品
十一、单调队列
序号 | 题目 | 知识点 |
---|---|---|
739 | 每日测温 | 递增栈 |
496 | 下一个更大元素 I | |
其他 | 单调栈取最大子序列 | |
402 | 移掉K位数字 | |
316 | 去除重复字母 |
十一、输入输出练习
序号 | 题目 | 知识点 |
---|---|---|
01 | 漂亮的字符串 | 字符串,sc.hasNext() 的作用 |
02 | 牛星十进制 | 通过率为0时,除了测试案例,还需要自己写个测试案例,发现问题所在 |
03 |
十二、补充目录
题号 | 题目 | 知识点 |
---|---|---|
23 | 合并K个升序链表 | 优先级队列,分而治之算法 |
32 | 最长有效括号 | 栈 |
42 | 接雨水 | 动态规划思想 |
49 | 字母异位词分组 | Steam流,字符串,map |
56 | 合并区间 | 二维数组排序 |
76 | 最小覆盖子串 | 滑动窗口 |
79 | 单词搜索 | 回溯思想,学会控制方向数组用法 |
84 | 柱状图中最大的矩形 | 单调栈 |
64 | 最小路径和 | 动态规划 |
200 | 岛屿类问题 | DFS |
128 | 最长连续序列 | 哈希 |
146 | LRU缓存~ | 哈希链表,双向链表 |
148 | 排序链表~ | 归并排序 |
152 | 乘积最大的子数组 | 动态规划 |
210 | 课程表 | 拓扑排序,邻接表,有向无环图 |
621 | 任务调度器 | 贪心,优先级队列 |
581 | 最短无序连续数组 | 左右遍历 |
560 | 和为k的子数组 | 前缀合,哈希表 |
437 | 路径总和III | 前缀合,哈希表 |
215 | 数组中的第k个最大的元素 | 优先级队列,减而治之 |
287 | 寻找重复数 | 快慢指针,二分法 |
438 | 找到字符串中所有字母异位词 | 滑动窗口+数组 |
221 | 最大正方形求解 | 动态规划 |
238 | 除自身以外的数组 乘积 | 贪心,数组 |
208 | 实现Trie(前缀树) | |
136,137,260 | 异或题目 | |
448 | 找到所有数组中消失的数字 | 原地数组 |
160 | 相交链表 | 快慢指针(快指针先走长度差),或者合并两个链表先让两者长度相同 |
338 | 比特位计数 | 奇偶性 |
其他 | 链表求和 | 栈、和进位 |
169 | 多数元素 | 摩尔投票 |
155 | 最小栈 | 辅助栈 |
十三、真题练习
序号 | 题目 | 时间 |
---|---|---|
01 | K距离间隔重排字符串 | 华为2面手撕代码 |
02 | 分割数组最大值 | 华为机试 |
03 | 天平平衡 | 华为机试 |
04 | 返回单一数字字符串的个数 | 华为机试 |
05 | 不重叠数组最大和 | 阿里机试 |
06 | 牛星十进制 | 阿里机试 |
07 | 可能的排名 | 百度机试 |
08 | 完全二叉树最短路径问题 | 百度机试 |
09 | 链表中的最小字典序 | 腾讯机试 |
10 | 广告公司发放广告 | 腾讯机试 |
11 | 判断字符串是否相等 | 腾讯机试 |
12 | 做任务 | 中兴比特比赛 |
13 | 子串翻转 | 美团机试 |
14 | 序列旋转 | 美团机试 |
15 | 养精灵 | 腾讯-正式 |
16 | 01串 | 腾讯-正式 |
17 | 01序列 | 腾讯-正式 |
18 | 荷兰国旗问题 | 小米-正式 |
19 | 整除 | 美团-正式 |
20 | 交换 | 美团-正式 |
21 | 歌单 | 美团-正式 |
22 | 反转乘法表 | 百度-正式 |
23 | 实现计算器 |
十四、扩展目录
题号 | 题目 | 知识点 |
---|---|---|
01 | 最小公倍数和最大公约数 | 最小公倍数,最大公约数 |
02 | HR 面准备 | |
03 | Lazy 初始化(延迟初始化) | |
04 | 牛客网-剑指offer | |
05 | 刷题知识点 | |
06 | 算法知识点 | |
07 | (Java)树相关知识点学习 | |
08 | (Java)栈相关知识点学习 | |
09 | (Java)数组相关知识点学习 | |
10 | (Java)字符串相关知识点学习 | |
11 | (Java)数学相关知识点学习 | |
12 | (Java)链表相关知识点学习 | |
13 | 一篇文章带你搞定Java 中的与、或、异或、移位运算 | |
14 | (Java)刷题技巧 | |
15 | 动态规划 | |
16 | 一篇文章带你搞定牛客网的输入输出示例格式 | |
17 | 异或题目 |
对于数学性质的题目,首先写几项发现规律,笔试时可以写成代码注释的情况
创作挑战赛 新人创作奖励来咯,坚持创作打卡瓜分现金大奖以上是关于冲刺大厂之 Java 刷题总结的主要内容,如果未能解决你的问题,请参考以下文章
读书人的事情怎么能算"偷"呢?某大厂开发者对于Android多线程的总结
Java 大厂面试必刷题 Day1:何为面向对象编程的思想?面向对象三大特征是什么?