文章目录
-
- 前引
- 后端面试题 刷题博客合集(持续更新)
-
- 1、力扣Leetcode
- 2、牛客NewCoder
前引
目前笔者刷题 已经刷过了第一轮 但是对于一些没有第一眼就有思路的题目的话 就需要反复刷 而且第一轮主要是针对腾讯的高频面试题去刷的 这一轮把所有后端的高频面试题都需要加进去
第一轮刷题链接:腾讯后端高频面试题 Love 6 刷题合集(第一轮)
这里也像第一轮一样的 把目前自己的刷题总览贴一张图片出来吧
目前还是有700+了 但我觉得主要还是需要去反复刷那些 自己第一眼没有思路的题目 笔者目前已经很久没有刷过新的题了 都是在反复的做那些自己做过的题
那也就不多说了 lets go
后端面试题 刷题博客合集(持续更新)
1、力扣Leetcode
206. 反转链表(递归 + 迭代必须掌握)
146. LRU 缓存机制(后端面试题目中的重中之重)
3. 无重复字符的最长子串(滑动窗口)
25. K 个一组翻转链表(迭代 注意一些边界细节吧)
215. 数组中的第K个最大元素(快排 + 堆排序 就是手撕数据结构)
912. 排序数组(快排 堆排序 归并都可以进来)
15. 三数之和(去重 双指针)
53. 最大子序和(贪心算法 如果要求子数组的话 设立三个指针即可)
21. 合并两个有序链表(简单的链表连接 可以考虑变形去重)
1. 两数之和(哈希表)
141. 环形链表(快慢指针)
142. 环形链表 II(数学推导 快指针回到起点)
102. 二叉树的层序遍历(迭代 + 递归实现)
121. 买卖股票的最佳时机(动态规划)
122. 买卖股票的最佳时机 II(做一道附赠的题目)
20. 有效的括号(栈的应用)
160. 相交链表(先将两条链表走到剩余相同位置 之后继续走)
236. 二叉树的最近公共祖先(分情况讨论 从底至上递归)
88. 合并两个有序数组(需要从后往前遍历)
5. 最长回文子串(简单的动态规划)
33. 搜索旋转排序数组(第五次刷了 还是不会做 重复刷了)
200. 岛屿数量(深度优先算法)
46. 全排列(回溯)
415. 字符串相加(大数相加 待会再补个大数相减)
补充题:字符串相减(大数相减)
92. 反转链表 II(反转链表 注意断点)
23. 合并K个升序链表(归并 优先队列)
54. 螺旋矩阵(逻辑推理)
300. 最长递增子序列(动态规划 要求输出目标路径)
42. 接雨水(动态规划 双指针 面试需要考虑)
704. 二分查找(最基础的二分查找)
144. 二叉树的前序遍历(前序遍历)
94. 二叉树的中序遍历(中序遍历)
145. 二叉树的后序遍历(后序遍历)
143. 重排链表(包含非常多的链表基本操作)
232. 用栈实现队列(简单模拟)
225. 用队列实现栈(简单模拟)
124. 二叉树中的最大路径和(从底至上)
199. 二叉树的右视图(DFS BFS都可行)
70. 爬楼梯(动态规划 递归都可)
56. 合并区间(先排序 后整理区间)
82. 删除排序链表中的重复元素 II(链表操作)
69. x 的平方根(注意二分边界)
19. 删除链表的倒数第 N 个结点(快慢指针)
72. 编辑距离(动态规划dp)
剑指 Offer 22. 链表中倒数第k个节点(快慢指针)
4. 寻找两个正序数组的中位数(二分查找法)
148. 排序链表(归并算法 快排要求掌握)
2. 两数相加(注意carry位)
8. 字符串转换整数(注意一些细节 其他都还好)
31. 下一个排列(先找位置 后sort)
1143. 最长公共子序列(动态规划)
41. 缺失的第一个正数(原地设置哈希)
151. 翻转字符串里的单词(O(1)空间复杂度)
22. 括号生成(DFS + 回溯)
93. 复原 IP 地址(回溯)
105. 从前序与中序遍历序列构造二叉树(前序 + 后序)
239. 滑动窗口最大值(滑动窗口)
76. 最小覆盖子串(滑动窗口)
104. 二叉树的最大深度(DFS/BFS)
110. 平衡二叉树(自底向上O(n))
129. 求根到叶子节点数字之和(递归 非递归直接修改节点的值)
155. 最小栈(辅助栈)
113. 路径总和 II(DFS + 回溯)
543. 二叉树的直径(DFS 从底至上 O(n))
剑指 Offer 28. 对称二叉树(递归 + 迭代)
32. 最长有效括号(模拟栈 注意分段)
98. 验证二叉搜索树(递归 + 迭代)
43. 字符串相乘(字符串相加 注意添加零的位置)
165. 比较版本号(双指针 atoi)
64. 最小路径和(标准DP 含生成路径)
78. 子集(经典回溯 Backtracking)
322. 零钱兑换(动态规划)
470. 用 Rand7() 实现 Rand10()((x - 1) * x + x 拒绝算法)
234. 回文链表(迭代)
169. 多数元素(摩尔计数法)
39. 组合总和(经典回溯题目)
112. 路径总和(递归)
718. 最长重复子数组(动态规划)
48. 旋转图像(需掌握空间复杂度O(1))
226.翻转二叉树(迭代 递归都需要掌握)
34. 在排序数组中查找元素的第一个和最后一个位置(自定义lower_bound upper_bound)
14. 最长公共前缀(纵向比较 怎么还有这种简单题…)
221. 最大正方形(很好的dp题目)
83. 删除排序链表中的重复元素(简单的迭代)
62. 不同路径(最简单的dp)
128. 最长连续序列(unordered_map取连续区段)
162. 寻找峰值(对比中间区间值)
240. 搜索二维矩阵 II(类似二叉搜索树 第一行最右边开始遍历)
153. 寻找旋转排序数组中的最小值(二分查找)
695. 岛屿的最大面积(经典DFS)
394. 字符串解码(栈应用)
912. 排序数组(各类常见排序 快排 + 归并 + 堆排序)
24. 两两交换链表中的节点(迭代循环)
122. 买卖股票的最佳时机 II(动态规划)
662. 二叉树最大宽度(deque 容器成员为pair)
198. 打家劫舍(经典dp)
227. 基本计算器 II(map优先级处理)
152. 乘积最大子数组(经典dp)
179. 最大数(排序字符串)
138. 复制带随机指针的链表(ma存储位置 vector存储指针)
283. 移动零(遍历原地移动)
209. 长度最小的子数组(双指针 + 滑动窗口)
297. 二叉树的序列化与反序列化(考虑边界情况)
224. 基本计算器(注意负号)
498. 对角线遍历(有点难 按照level进行遍历)
912. 排序数组(堆排序 + 归并 + 快排)
剑指 Offer 09. 用两个栈实现队列(简单模拟)
225. 用队列实现栈(简单模拟)
剑指 Offer 54. 二叉搜索树的第k大节点(逆中序遍历)
402. 移掉 K 位数字(贪心算法)
210. 课程表 II(拓扑排序)
560. 和为K的子数组(哈希表记录sum)
139. 单词拆分(动态规划dp)
739. 每日温度(单调栈)
47. 全排列 II(全排列 去重)
50. Pow(x, n)(快速幂 迭代 + 递归)
剑指 Offer 62. 圆圈中最后剩下的数字 约瑟夫环(约瑟夫环 dp 逆向迭代)
518. 零钱兑换 II(外层循环条件)
剑指 Offer 51. 数组中的逆序对(归并算法优化)
135. 分发糖果(双向遍历)
440. 字典序的第K小数字(字典序树)
11. 盛最多水的容器(双指针O(n))
75. 颜色分类(一遍遍历 两遍遍历 荷兰国旗)
572. 另一个树的子树(递归判断)
384. 打乱数组(洗牌算法)
329. 矩阵中的最长递增路径(记忆化 DFS)
189. 旋转数组(原地旋转)
114. 二叉树展开为链表(反向先序遍历即可)
287. 寻找重复数(二分查找 判定条件需要思考)
91. 解码方法(动态规划)
106. 从中序与后序遍历序列构造二叉树(前序 中序 后序)
10. 正则表达式匹配(非常难想且细节很多的动态规划)
213. 打家劫舍 II(注意细节)
1047. 删除字符串中的所有相邻重复项(简单的栈使用)
678. 有效的括号字符串(双栈)
96. 不同的二叉搜索树(动态规划)
168. Excel表列名称(10进制转26进制)
400. 第 N 位数字(计算前缀 计算位置)
45. 跳跃游戏 II(贪心算法)
71. 简化路径(栈分析)
679. 24 点游戏(递归回溯 注意误差)
154. 寻找旋转排序数组中的最小值 II(寻找边界条件)
1411. 给 N x 3 网格图涂色的方案数(动态规划)
815. 公交路线(广度优先算法)
443. 压缩字符串(简单的设置pos)
673. 最长递增子序列的个数(应注意数据长度)
887. 鸡蛋掉落(最难的dp)
134. 加油站(贪心算法)
剑指 Offer 26. 树的子结构(递归)
264. 丑数 II(动态规划 三指针)
44. 通配符匹配(动态规划)
97. 交错字符串(动态规划)
nowcoder 整数与IP地址间的转换
516. 最长回文子序列(动态规划)
85. 最大矩形(动态规划)
253. 会议室 II(查重区间)
395. 至少有 K 个重复字符的最长子串(分而治之)
343. 整数拆分(动态规划)
154. 寻找旋转排序数组中的最小值 II(二分查找 关键是边界条件)
171. Excel表列序号(26进制)
378. 有序矩阵中第 K 小的元素(二分查找)
946. 验证栈序列(栈模拟)
337. 打家劫舍 III(map记忆化递归)
437. 路径总和 III(前缀和 map)
172. 阶乘后的零(数5的个数)
2、牛客NewCoder
NC88 寻找第K大(堆排序 + Quick Select)
NC113 验证IP地址(IPv4 IPv6)