腾讯后端高频面试题 Love 6 刷题合集(第一轮)


前引


鉴于力扣我已经刷了六百多道了 当我是分专题做的
二分查找 贪心算法
动态规划 回溯算法
二叉树 DFS BFS
类似还有很多的算法 绝大部分我都已经做过了

在大概刷了半年多的题后 我也决定在今天之后开始 彻底总攻腾讯后端面试题了 于是在此开一篇博客 来记录我写的每一道后端面试高频考题

附上一张 开始刷题时 力扣的刷题页面吧
在这里插入图片描述


后端面试题 刷题博客合集(持续更新中)


146. LRU 缓存机制(手撕双向链表 + LRU算法理解)
206. 反转链表(原地反转链表 迭代 + 递归)
912. 排序数组(手撕快速排序 递归 + 非递归)
21. 合并两个有序链表(合并两个有序升队列)
8. 字符串转换整数(atoi实现 注意看题 + 处理细节)
234. 回文链表(快慢指针 + 原地反转链表)
704. 二分查找(常规二分查找 注意边界以及等号问题)
470. 用 Rand7() 实现 Rand10()(概率问题 Rand公式 (x-1)*y + y)
53. 最大子序和(动态规划 可能考察子数组问题)
3. 无重复字符的最长子串(滑动窗口 注意左指针 右指针移动)
460. LFU 缓存(LFU 缓存 双哈希表优化O(1)机制)
4. 寻找两个正序数组的中位数(二分查找 核心分割线左边数 等于 右边)
912. 排序数组(手撕堆排序 再次熟悉堆排序)
141. 环形链表(快慢指针 典型题目 秒解)
153. 寻找旋转排序数组中的最小值(经典二分算法)
215. 数组中的第K个最大元素(手撕最小堆)
25. K 个一组翻转链表(递归处理 原地反转链表)
70. 爬楼梯(简单的动态规划)
5. 最长回文子串(中心拓展 经典动态规划)
151. 翻转字符串里的单词(注意原地翻转 边界情况)
102. 二叉树的层序遍历(BFS + DFS可递归实现)
415. 字符串相加(注意Carry位)
15. 三数之和(注意 时间复杂度 双指针)
剑指 Offer 54. 二叉搜索树的第k大节点(逆中序遍历)
678. 有效的括号字符串(使用栈 注意stack 下标放入位置)
20. 有效的括号(easy题目 栈使用)
213. 打家劫舍 II(动态规划 注意两种情况)
239. 滑动窗口最大值(滑动窗口 注意pop条件)
322. 零钱兑换(基础动态规划)
2. 两数相加(简单的链表和相加 + carry位)
160. 相交链表(双指针最佳 注意边界 自解两遍遍历)
138. 复制带随机指针的链表(哈希表 + vector记录 一遍遍历)
142. 环形链表 II(双指针 + 两周循环 数学推导)
104. 二叉树的最大深度(简单迭代)
43. 字符串相乘(字符串多个相加)
199. 二叉树的右视图(深度优先 或 广度优先算法 DFS BFS)
494. 目标和(简单的动态规划)
144. 二叉树的前序遍历(迭代+递归 经典老套路)
42. 接雨水(两遍遍历 左右依次遍历一次 经典题目)
622. 设计循环队列(注意head 和 rear的设计值的大小)
23. 合并K个升序链表(不能只会一个归并 优先队列也要会 优先队列自定义结构体排序也需要知道!!!)
33. 搜索旋转排序数组(绝对的二分好题!自解花了一个小时 需要反复拿来做)
54. 螺旋矩阵(O(1)时间复杂度 确认四个边界)
169. 多数元素(摩尔投票法 一次遍历)
剑指 Offer 22. 链表中倒数第k个节点(快慢指针需要掌握)
236. 二叉树的最近公共祖先(递归处理)
525. 连续数组(前缀和 + Hashmap 这种题还能前缀和实属没想到)
227. 基本计算器 II(递归下降处理)
232. 用栈实现队列(最优解 分摊O(1))
110. 平衡二叉树(从底至上 一遍遍历)
1. 两数之和(hashmap 一遍遍历)
300. 最长递增子序列(可二分优化 nlogn 动态规划)
328. 奇偶链表(注意边界情况)
442. 数组中重复的数据(注意index如何标记)
nowcoder 整数与IP地址间的转换(ip地址与整数的切换 位运算)
112. 路径总和(很简单的题目)
912. 排序数组(归并排序)
9. 回文数(简单的题目)
155. 最小栈(两个栈来计算)
136. 只出现一次的数字(注意拓展题 二分查找条件)
76. 最小覆盖子串(滑动窗口经典题目 Sliding Window)
61. 旋转链表(注意断点)
82. 删除排序链表中的重复元素 II(常规链表题 注意细节)
92. 反转链表 II(一次遍历 注意细节)
75. 颜色分类(荷兰国旗问题 两次遍历较简单 一次遍历注意交换)
143. 重排链表(最优解 链表好题 综合各种问题)
78. 子集(最基础 最简单的回溯算法)
59. 螺旋矩阵 II(简单的撞墙法)
189. 旋转数组(最优解一次遍历 空间O(1))
718. 最长重复子数组(简单的dp)
887. 鸡蛋掉落(经典dp 真的难 多做几次吧)
148. 排序链表(归并 + 快排)
46. 全排列(需要反复多做几次)
88. 合并两个有序数组(双指针倒序 需要过段时间再做一次)
31. 下一个排列(两次遍历 最优解 需要多做)
240. 搜索二维矩阵 II(从右上角开始二分查找)
11. 盛最多水的容器(双指针)
706. 设计哈希映射(拉链法 掌握的不是很好 :0 需要多做)
115. 不同的子序列(动态规划 自解)
105. 从前序与中序遍历序列构造二叉树(有点难 注意细节)
179. 最大数(二刷没做出来 看解 多刷 注意排序条件)
692. 前K个高频单词(灵活使用优先队列)
459. 重复的子字符串(kmp算法 next求解)
121. 买卖股票的最佳时机(简单的动态规划)
103. 二叉树的锯齿形层序遍历(需要一遍遍历)
200. 岛屿数量(简单的BFS)
1143. 最长公共子序列(动态规划)
384. 打乱数组(洗牌算法 C++)
128. 最长连续序列(哈希表 可求左右边界)
63. 不同路径 II(简单的dp)
剑指 Offer 42. 连续子数组的最大和(子数组和 只取正数部分)
226.翻转二叉树(迭代也需要掌握)
134. 加油站(贪心算法 求局部提高sum)
378. 有序矩阵中第 K 小的元素(二分查找 需要多做)
94. 二叉树的中序遍历(需要掌握 迭代 递归)
剑指 Offer 57. 和为s的两个数字(双指针)
14. 最长公共前缀(注意越界情况)
26. 删除有序数组中的重复项(简单的swap)
876. 链表的中间结点(双指针)
210. 课程表 II(拓扑排序)
295. 数据流的中位数(两个堆合并)
69. x 的平方根(二分查找)
394. 字符串解码(注意放置位置 理解递归)
172. 阶乘后的零(注意0怎么出现的)
1047. 删除字符串中的所有相邻重复项(模拟字符串删除即可)
337. 打家劫舍 III(习题复健期 注意map优化)
703. 数据流中的第 K 大元素(priority_queue 优先队列)
97. 交错字符串(动态规划)
56. 合并区间(排序 合并即可)
剑指 Offer 39. 数组中出现次数超过一半的数字(简单的摩尔计数法)
34. 在排序数组中查找元素的第一个和最后一个位置(自定义排序 摩尔排序法)
74. 搜索二维矩阵(经典二分查找)
72. 编辑距离(经典经典动态规划)
106. 从中序与后序遍历序列构造二叉树(递归解决)
面试题 01.05. 一次编辑(经典dp 相同类型)
518. 零钱兑换 II(注意外层循环)
567. 字符串的排列(滑动窗口经典题目)
125. 验证回文串(最简单的题目 没有之一唯一注意的是需要审题)
50. Pow(x, n)(快速幂 需要记住)
200. 岛屿数量(广度优先 | 深度优先都可)
48. 旋转图像(旋转 镜像 寻找旋转规律)
93. 复原 IP 地址(注意间隔 逗号以及遍历)
129. 求根到叶子节点数字之和(递归和迭代)
1095. 山脉数组中查找目标值(先求峰顶 再按照二分查找 右半边需要翻转查找)
405. 数字转换为十六进制数(模拟+进制转换)
剑指 Offer 40. 最小的k个数(快排 或者小顶堆)
113. 路径总和 II(简单的backtracking dfs)
19. 删除链表的倒数第 N 个结点(双指针)
118. 杨辉三角(简单的找规律)
剑指 Offer 03. 数组中重复的数字(原地旋转法)
7. 整数反转(数字模拟 注意边界处理))
287. 寻找重复数(二分查找 特殊情况)
907. 子数组的最小值之和(单调栈 + 公式推导 难)
补充题21. 字符串相减(待做 力扣中没有这个题目)
剑指 Offer 65. 不用加减乘除做加法(位运算 考虑进位结果与未进位数字的结果)
279. 完全平方数(需要注意 每次遍历优化由完全平方数)
209. 长度最小的子数组(滑动窗口)
228. 汇总区间(简单的逻辑题)
39. 组合总和(搜索回溯题目 不难)
95. 不同的二叉搜索树 II(回溯 遍历)
482. 密钥格式化(简单的模拟)
852. 山脉数组的峰顶索引(注意二分条件!)
面试题 01.07. 旋转矩阵(镜像 对称即可)
51. N 皇后(回溯算法 根据题意相对应写出解答即可)
214. 最短回文串(KMP算法 解决最长前后缀长度 较为困难)
1343. 大小为 K 且平均值大于等于阈值的子数组数目(最基础的滑动窗口)
127. 单词接龙(层序遍历 经典BFS)
415. 字符串相加(字符串相加 注意carry位)
740. 删除与获得点数(动态规划)
198. 打家劫舍(动态规划)
121. 买卖股票的最佳时机(买卖股票系列 动态规划)
122. 买卖股票的最佳时机 II(买卖股票系列 动态规划)
123. 买卖股票的最佳时机 III(买卖股票系列 动态规划)
309. 最佳买卖股票时机含冷冻期(买卖股票系列 动态规划)
1100. 长度为 K 的无重复字符子串(滑动窗口)
22. 括号生成(回溯 + dfs)
252. 会议室(简单的排序逻辑 判断区间重复)
253. 会议室 II(计算重复区间个数 排序)
739. 每日温度(单调栈)
1166. 设计文件系统(暴力哈希)
面试题 01.06. 字符串压缩(模拟计数字符串即可)
剑指 Offer 04. 二维数组中的查找(简单的二分查找)
55. 跳跃游戏(简单的贪心算法)
剑指 Offer 49. 丑数(最小堆处理)
354. 俄罗斯套娃信封问题(最长上升子序列 follow_up问题 )
781. 森林中的兔子(数学逻辑问题)
131. 分割回文串(动态规划 + 回溯)
108. 将有序数组转换为二叉搜索树(简单的递归)
410. 分割数组的最大值(动态规划 二分查找必须掌握)
10. 正则表达式匹配(有点困难 需要对转移方程清晰认识)
1493. 删掉一个元素以后全为 1 的最长子数组(双指针)
83. 删除排序链表中的重复元素(双指针)
951. 翻转等价二叉树(简单的递归)
62. 不同路径(简单的dp)
1209. 删除字符串中的所有相邻重复项 II(需要一个栈记录计数)
12. 整数转罗马数字(简单的模拟)
139. 单词拆分(简单的动态规划)
450. 删除二叉搜索树中的节点(简单的递归)
268. 丢失的数字(可采用计数 或者 原地哈希)
50. Pow(x, n)(快速幂 迭代比较难 )
1219. 黄金矿工(最基础的回溯算法)
15. 三数之和(固定住一个元素 移动另外两个)
168. Excel表列名称(排序+双指针)
468. 验证IP地址(逻辑题目)
329. 矩阵中的最长递增路径(记忆化dfs)
111. 二叉树的最小深度(简单的深度优先算法)
695. 岛屿的最大面积(简单的深度优先)
剑指 Offer 09. 用两个栈实现队列(模拟)
225. 用队列实现栈(模拟)
84. 柱状图中最大的矩形(单调栈 难)
28. 实现 strStr()(kmp算法)
560. 和为K的子数组(前缀和+哈希表)
剑指 Offer 52. 两个链表的第一个公共节点(先去除多余节点)
154. 寻找旋转排序数组中的最小值 II(注意右边元素)
64. 最小路径和(简单的dp 需要注意面试询问具体路径)
297. 二叉树的序列化与反序列化(含模拟 )
443. 压缩字符串(直接模拟即可 注意一些细节)
557. 反转字符串中的单词 III(swap 原地)
162. 寻找峰值(寻找mid 与 mid + 1的关系)
208. 实现 Trie (前缀树)(26叉树)
剑指 Offer 36. 二叉搜索树与双向链表(递归迭代 )
117. 填充每个节点的下一个右侧节点指针 II(利用next 模拟层序队列)
316. 去除重复字母(需要判断是否处于最后一个 )
523. 连续的子数组和(哈希 + 前缀 判断)
283. 移动零(原地旋转即可)
24. 两两交换链表中的节点(递归 + 迭代)
724. 寻找数组的中心下标(左右两边数组之和相等)
451. 根据字符出现频率排序(哈希表 + 优先队列)
679. 24 点游戏(绝对的递归回溯难题)
994. 腐烂的橘子(华为机试真题 迭代即可)
137. 只出现一次的数字 II(位运算 )
260. 只出现一次的数字 III(位运算)
剑指 Offer 51. 数组中的逆序对(归并算法求逆序对)
701. 二叉搜索树中的插入操作(简单的递归)
530. 二叉搜索树的最小绝对差(中序遍历)
224. 基本计算器(考虑 单 ‘-’ 需要往stack emplace 0 考虑边界 双栈)
剑指 Offer 58 - I. 翻转单词顺序(注意很多细节 尤其注意reverse函数)
350. 两个数组的交集 II(排序 + 双指针)
41. 缺失的第一个正数(原地哈希)
378. 有序矩阵中第 K 小的元素(二分 需要多做)
409. 最长回文串(凑字数即可)
206. 反转链表(迭代 + 递归)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Love 6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值