经典算法题思路整理-Leetcode力扣经典算法题目整理

  • 自己能在面试中A4纸写出来的代码才是好代码,不要一味追求复杂度低的代码,如果写都写不出来更不用谈复杂度。
  • 第一遍先大概粗过一遍题目思路,第二遍再刷代码。
  • 标注出不熟悉的题目,隔天复习,加强记忆。

数组
数学
字符串
链表
二叉树
回溯、搜索
动态规划
堆栈快排等
其他

数组
DescriptionSolution
287. 寻找重复数hashmap、排序、二分变形
283. 移动零双指针、冒泡
剑指 Offer 50. 第一个只出现一次的字符哈希
1. 两数之和哈希
167. 两数之和 II - 输入有序数组、剑指 Offer 57. 和为s的两个数字哈希或双指针
!!!581. 最短无序连续子数组双指针
88. 合并两个有序数组双指针
977. 有序数组的平方
!!! 75. 颜色分类荷兰旗问题
!!!334. 递增的三元子序列三指针
---------------------------------------------
剑指 Offer 57 - II. 和为s的连续正数序列滑动窗口
集合交集哈希、排序
剑指 Offer 66. 构建乘积数组、LeetCode 238. 除自身以外数组的乘积乘积=当前数左边的乘积*当前数右边的乘积
Leetcode 35. 搜索插入位置二分
4. 寻找两个正序数组的中位数二分
34. 在排序数组中查找元素的第一个和最后一个位置二分
153. 寻找旋转排序数组中的最小值旋转数组查找
剑指 Offer 11. 旋转数组的最小数字、154. 寻找旋转排序数组中的最小值 II
33. 搜索旋转排序数组
剑指 Offer 53 - I. 在排序数组中查找数字 I两次二分
剑指 Offer 53 - II. 0~n-1中缺失的数字二分
1300. 转变数组后最接近目标值的数组和枚举+二分
剑指 Offer 59 - I. 滑动窗口的最大值、239. 滑动窗口最大值二分
162. 寻找峰值二分变形
410. 分割数组的最大值二分变形
剑指 Offer 04. 二维数组中的查找、240. 搜索二维矩阵 II二分变形
数组超过一半的数字/求众数hashmap、排序
旋转数组三次旋转
统计邻居状态neighbor函数、CNN卷积
救生艇贪心+双指针
-----------------------------------先排序后操作
56. 合并区间排序后贪心
57. 插入区间合并区间
406. 根据身高重建队列先排序后插入
452. 用最少数量的箭引爆气球先排序后贪心
Python自定义排序模板
1030. 距离顺序排列矩阵单元格自定义排序
164. 最大间距桶排序
-----------------------------------
跳跃游戏贪心
1024. 视频拼接区间合并贪心
盛最多水的容器贪心、双指针
统计「优美子数组」组合个数
剑指 Offer 48. 最长不含重复字符的子字符串、3. 无重复字符的最长子串滑动窗口或者以s[i]结尾的dp
209. 长度最小的子数组
和为K的子数组连续的子数组和和可被 K 整除的子数组前缀和
-----------------------------------------单调栈
739. 每日温度496. 下一个更大元素 I
84. 柱状图中最大的矩形
239. 滑动窗口最大值
84. 柱状图中最大的矩形
85. 最大矩形
42. 接雨水
-------------------------------------------
求1+2+…+n递归求和
128. 最长连续序列集合
单词接龙构造BFS
最佳观光组合迭代
15. 三数之和16. 最接近的三数之和回溯或者双指针
------------------------------------原地哈希
41. 缺失的第一个正数
剑指 Offer 03. 数组中重复的数字
442. 数组中重复的数据
448. 找到所有数组中消失的数字
--------------------------------
剑指 Offer 39. 数组中出现次数超过一半的数字摩尔投票法(正负相抵消)
-----------------------------------模拟
36. 有效的数独
48. 旋转图像/旋转矩阵辅助空间、原地翻转
49. 字母异位词分组
171. Excel表列序号
454. 四数相加 II
剑指 Offer 61. 扑克牌中的顺子
-------------------------------------模拟
54. 螺旋矩阵模拟
134. 加油站不容易想到的算法
31. 下一个排列不容易想到的算法
380. 常数时间插入、删除和获取随机元素数组+哈希表
384. 打乱数组洗牌算法
169. 多数元素布尔投票法
数学
字符串
链表
DescriptionSolution
剑指 Offer 18. 删除链表的节点
删除重复节点I使用头节点,更新pre.next即可
删除重复节点II
19. 删除链表的倒数第N个节点使用头节点的快慢双指针
!!!剑指 Offer 24. 反转链表、206. 反转链表使用头节点和辅助节点tmpNode=cur.next
!!!25. K 个一组翻转链表
-----------------------------------链表回溯
剑指 Offer 06. 从尾到头打印链表
143. 重排链表
-----------------------------------
160. 相交链表hashmap、双指针
剑指 Offer 52. 两个链表的第一个公共节点双指针
141. 环形链表142. 环形链表 IIhashmap、快慢双指针
剑指 Offer 22. 链表中倒数第k个节点快慢指针
!!!146. LRU缓存机制双向链表+Hashmap
快乐数快慢指针判断环
链表中间节点快慢指针
234. 回文链表枚举、双指针
328. 奇偶链表双指针
21. 合并两个排序的链表、剑指 Offer 25. 合并两个排序的链表模拟
剑指 Offer 35. 复杂链表的复制模拟
链表两数相加 II
138. 复制带随机指针的链表两种思路模拟
2. 两数相加模拟
61. 旋转链表链表=>环
二叉树
DescriptionSolution
二叉树非递归遍历前序中序后序
114. 二叉树展开为链表前序
404. 左叶子之和前序
------------------------------二叉树深度问题
剑指 Offer 55 - I. 二叉树的深度后序maxDepth(root)、前序层次
222. 完全二叉树的节点个数logn*logn
剑指 Offer 55 - II. 平衡二叉树、110. 平衡二叉树后序
LeetCode 111. 二叉树的最小深度层序
543. 二叉树的直径后序遍历
662. 二叉树最大宽度层序
------------------------------路径问题
257. 二叉树的所有路径
112.路径和是否存在路径和
113. 路径总和 II、剑指 Offer 34. 二叉树中和为某一值的路径打印出路径
437. 路径总和 III打印出可以不经过根节点的路径
124. 二叉树中的最大路径和后序遍历MaxGain(root),打印出可以不经过根节点的最大路径
-------------------------------
116. 填充每个节点的下一个右侧节点指针层序遍历
剑指 Offer 32 - I. 从上到下打印二叉树
剑指 Offer 32 - II. 从上到下打印二叉树 II
剑指 Offer 32 - III. 从上到下打印二叉树 III
199. 二叉树的右视图
103. 二叉树的锯齿形层次遍历
958. 二叉树的完全性检验
--------------------------------
105. 从前序与中序遍历序列构造二叉树、剑指 Offer 07. 重建二叉树重建二叉树
106. 从中序与后序遍历序列构造二叉树
剑指 Offer 33. 二叉搜索树的后序遍历序列
--------------------------------
94. 二叉树的中序遍历中序遍历
108. 将有序数组转换为二叉搜索树中序遍历
98. 验证二叉搜索树中序遍历
-------------------------------------
538. 把二叉搜索树转换为累加树中序变形
剑指 Offer 54. 二叉搜索树的第k大节点
230. 二叉搜索树中第K小的元素、二叉搜索树第K个节点中序遍历
-------------------------------两颗二叉树问题
100. 相同的树两个树结构和值是否完全相同
101. 对称二叉树两个树是否对称
剑指 Offer 27. 二叉树的镜像输出A树的镜像
572. 另一个树的子树剑指 Offer 26. 树的子结构A是否是B的子树
617. 合并二叉树输出合并后新的二叉树
----------------------------------
99. 恢复二叉搜索树中序遍历
1028. 从先序遍历还原二叉树迭代模拟递归
二叉树的序列化与反序列化层次遍历
-----------------------------------
235. 二叉搜索树的最近公共祖先、剑指 Offer 68 - I. 二叉搜索树的最近公共祖先搜索树
236. 二叉树的最近公共祖先、剑指 Offer 68 - II. 二叉树的最近公共祖先后序遍历
226. 翻转二叉树后序遍历
回溯、搜索
DescriptionSolution
--------------------子集、排列、组合问题
78. 子集
90. 子集 II
491. 递增子序列子集变形
842. 将数组拆分成斐波那契序列子集变形
474. 一和零
46. 全排列
47. 全排列 II
60. 第k个排列
494. 目标和
39. 组合总和
40. 组合总和 II
216. 组合总和 III
剑指 Offer 38. 字符串的排列
77. 组合
电话号码字母组合/字母大小写全排列集合选择元素组合
--------------------------------
51. N 皇后经典回溯
79. 单词搜索二维数组回溯
332. 重新安排行程
---------------------------------BFS
200. 岛屿数量二维数组BFS
130. 被围绕的区域二维BFS或者并查集
733. 图像渲染二维数组BFS
剑指 Offer 12. 矩阵中的路径二维数组DFS回溯
785. 判断二分图BFS染色
301. 删除无效的括号BFS
133. 克隆图DFS或者BFS
841. 钥匙和房间
腐烂的橘子机器人的运动范围正向BFS
最远的海洋矩阵反向BFS
-------------------------------------
5. 最长回文子串回文串
9. 回文数回文串
409. 最长回文串回文串
131. 分割回文串画出回溯树
---------------------------------------区间
647. 回文子串区间DP
516. 最长回文子序列区间DP
486. 预测赢家
动态规划
DescriptionSolution
-----------------------------------背包问题
01背包和完全背包代码区别
322. 零钱兑换完全背包
518. 零钱兑换 II完全背包
416. 分割等和子集01最大背包
-----------------------------------
72. 编辑距离
剑指 Offer 60. n个骰子的点数类似编辑
----------------————--------子序列和子串问题
718. 最长重复子数组最长公共子串
1143. 最长公共子序列最长公共子序列
子串问题dp[i][j]为以s1[i] s2[j]为结尾的子问题子序列问题dp[i][j]不用以s1[i] s2[j]为结尾的子问题
674. 最长连续递增序列注意与下面一个题目区别 O(n)
300. 最长上升子序列O(n^2)
剑指 Offer 42. 连续子数组的最大和53. 最大子序和
最大序列乘积
392. 判断子序列类似最长公共子序列或者双指针
----------------------------------前面两个状态推后面一个状态
剑指 Offer 10- I. 斐波那契数列迭代、递归、剪枝递归、通项公式、矩阵快速幂
剑指 Offer 10- II. 青蛙跳台阶问题70. 爬楼梯
面试金典 17.16. 按摩师198. 打家劫舍dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])
264. 丑数 II、剑指 Offer 49. 丑数
-----------------------------------
97. 交错字符串
扔鸡蛋
面试题 08.11. 硬币、322. 零钱兑换
最低票价
把数字翻译成字符串类似于斐波那契数列
91. 解码方法dp[i]:以s[i]结尾的解码数量
139. 单词拆分dp[i]:以s[i]结尾的字符串能不能由字典表示
140. 单词拆分 II记录每个状态的中间结果。需要回溯方法才能通过
20. 有效的括号
32. 最长有效括号dp[i]: 以s[i]结尾的字符串有效括号的长度
-----------------------------------路径问题
62. 不同路径63. 不同路径 II
64. 最小路径和
120. 三角形最小路径和
329. 矩阵中的最长递增路径 回溯或者拓扑排序+二维矩阵DP
剑指 Offer 47. 礼物的最大价值二维矩阵中DP
221. 最大正方形二维矩阵中DP
面试题 17.13. 恢复空格动态规划
-----------------------------------股票问题
121. 买卖股票的最佳时机、剑指 Offer 63. 股票的最大利润仅交易一次
122. 买卖股票的最佳时机 II不限制交易次数
123. 买卖股票的最佳时机 III2笔比交易
309. 最佳买卖股票时机含冷冻期含有冷冻期
188. 买卖股票的最佳时机 IV仅k次交易
714. 买卖股票的最佳时机含手续费有手续费不限制次数的交易
-----------------------------------
174. 地下城游戏反向DP
96. 不同的二叉搜索树DP
95. 不同的二叉搜索树 II回溯
338. 比特位计数一维DP
312. 戳气球自下向上DP
---------------------------------------区间DP
647. 回文子串
516. 最长回文子序列
486. 预测赢家博弈论和区间DP
877. 石子游戏博弈论和区间DP
----------------------------------------
堆、栈、快排
其他
DescriptionSolution
矩形是否相交/矩形相交面积IoU相关
统计邻居状态neighbor函数、CNN 卷积
使数组唯一的最小增量贪心
gcd/lcm/贝祖定理最大公约数、最小公倍数、二元一次方程解
数组最大公约数tmp=gcd(tmp,x)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值