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

2023-11-16

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

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

数组
Description Solution
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. 多数元素 布尔投票法
数学
Description Solution
n的平方根 二分、牛顿法
50. Pow(x, n) 二分快速幂
剑指 Offer 16. 数值的整数次方 二分快速幂
two sum hashmap
剑指 Offer 14- I. 剪绳子、343. 整数拆分 分解为2和3
RandX==>RandY randN相互生成
29. 两数相除 不使用除法做除法
172. 阶乘后的零
204. 计数质数 素数筛法
166. 分数到小数 模拟除法
剑指 Offer 43. 1~n整数中1出现的次数、233. 数字 1 的个数 手动推导思路
149. 直线上最多的点数 直线斜率
268. 缺失数字 原地哈希、位运算、求和
面试题 16.11. 跳水板 数学推导
数字二进制中1的个数 右移位运算
136. 只出现一次的数字 异或
136. 只出现一次的数字 异或
剑指 Offer 56 - I. 数组中数字出现的次数 异或
461. 汉明距离 异或
剑指 Offer 56 - II. 数组中数字出现的次数 II 位运算
剑指 Offer 65. 不用加减乘除做加法 异或、移位做加法
剑指 Offer 15. 二进制中1的个数、191. 位1的个数 右移
89. 格雷编码 右移
字符串
Description Solution
压缩字符串 list辅助记录cnt
208. 实现 Trie (前缀树) 前缀树
820. 单词的压缩编码 后缀树
212. 单词搜索 II 前缀树
336. 回文对 前缀树
最小覆盖子串 滑动窗口
剑指 Offer 19. 正则表达式匹配、10. 正则表达式匹配 回溯
44. 通配符匹配 回溯
----------------------------------- 模拟
13. 罗马数字转整数
49. 字母异位词分组
387. 字符串中的第一个唯一字符
242. 有效的字母异位词
剑指 Offer 67. 把字符串转换成整数
剑指 Offer 58 - I. 翻转单词顺序
剑指 Offer 58 - II. 左旋转字符串
696. 计数二进制子串 模拟或者动态规划
459. 重复的子字符串
93. 复原IP地址 暴力模拟
468. 验证IP地址 模拟
43. 字符串相乘 模拟竖式乘法
--------------------------------
179. 最大数 自定义排序
剑指 Offer 45. 把数组排成最小的数 自定义排序
344. 反转字符串 双指针
剑指 Offer 58 - I. 翻转单词顺序 双指针
395. 至少有K个重复字符的最长子串 分治
剑指 Offer 20. 表示数值的字符串 自动机
链表
Description Solution
剑指 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. 环形链表 II hashmap、快慢双指针
剑指 Offer 22. 链表中倒数第k个节点 快慢指针
!!!146. LRU缓存机制 双向链表+Hashmap
快乐数 快慢指针判断环
链表中间节点 快慢指针
234. 回文链表 枚举、双指针
328. 奇偶链表 双指针
21. 合并两个排序的链表、剑指 Offer 25. 合并两个排序的链表 模拟
剑指 Offer 35. 复杂链表的复制 模拟
链表两数相加 II
138. 复制带随机指针的链表 两种思路模拟
2. 两数相加 模拟
61. 旋转链表 链表=>环
二叉树
Description Solution
二叉树非递归遍历 前序中序后序
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. 翻转二叉树 后序遍历
回溯、搜索
Description Solution
-------------------- 子集、排列、组合问题
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. 预测赢家
动态规划
Description Solution
----------------------------------- 背包问题
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. 买卖股票的最佳时机 III 2笔比交易
309. 最佳买卖股票时机含冷冻期 含有冷冻期
188. 买卖股票的最佳时机 IV 仅k次交易
714. 买卖股票的最佳时机含手续费 有手续费不限制次数的交易
-----------------------------------
174. 地下城游戏 反向DP
96. 不同的二叉搜索树 DP
95. 不同的二叉搜索树 II 回溯
338. 比特位计数 一维DP
312. 戳气球 自下向上DP
--------------------------------------- 区间DP
647. 回文子串
516. 最长回文子序列
486. 预测赢家 博弈论和区间DP
877. 石子游戏 博弈论和区间DP
----------------------------------------
堆、栈、快排
Description Solution
150. 逆波兰表达式求值 栈的应用
剑指 Offer 30. 包含min函数的栈、Leetcode 155. 最小栈 辅助最小栈
栈实现队列剑指 Offer 09. 用两个栈实现队列 辅助栈
剑指 Offer 31. 栈的压入、弹出序列 栈模拟
剑指 Offer 59 - II. 队列的最大值 单调队列
341. 扁平化嵌套列表迭代器
----------------------------------- 堆与快排
剑指 Offer 41. 数据流中的中位数、LeetCode 295. 数据流的中位数 大小堆
347. 前 K 个高频元素 小根堆
快速排序模板
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 快排思想
剑指 Offer 40. 最小的k个数 快排思想
LeetCode 215. 数组中的第K个最大元素 全排序、局部排序、堆、快排思想
--------------------------------
324. 摆动排序 II partition和二分
207. 课程表210. 课程表 II 拓扑排序
227. 基本计算器 II
剑指 Offer 51. 数组中的逆序对 归并
23. 合并K个排序链表 优先队列或者归并
378. 有序矩阵中第K小的元素 二分或者归并
315. 计算右侧小于当前元素的个数 归并
148. 排序链表 归并
其他
Description Solution
矩形是否相交/矩形相交面积 IoU相关
统计邻居状态 neighbor函数、CNN 卷积
使数组唯一的最小增量 贪心
gcd/lcm/贝祖定理 最大公约数、最小公倍数、二元一次方程解
数组最大公约数 tmp=gcd(tmp,x)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经典算法题思路整理-Leetcode力扣经典算法题目整理 的相关文章

随机推荐

  • opengl纹理映射的学习总结

    1 不同的滤波方式的效果区别 使用Nearest滤波纹理的效果 看起来很斑驳 使用MipMapped的效果 看起来很平滑 2 void glTexImage1D GLenum target GLint level GLint interna
  • 【状态估计】基于增强数值稳定性的无迹卡尔曼滤波多机电力系统动态状态估计(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章讲解 1 概述 文献来源 摘要 为了提高用于电
  • 7-数据结构-单链表的插入删除操作

    问题 单链表的各种插入和删除操作 思路 1 按位插入 带头结点 创建一个单链表结点 typedef struct lnode int data lnode next lnode linklist 初始化单链表 void inilist li
  • 怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?

    文章目录 序幕 概述 1 安装 PHP 2 安装MySQL数据库 3 安装 Wordpress 4 设置您的 WordPress 数据库 设置 MySQL MariaDB 创建 WordPress 数据库 5 WordPress confi
  • 【华为OD机试真题 C语言】11、第K个排列

    文章目录 一 题目 题目描述 输入输出 样例1 样例2 二 思路参考 三 代码参考 C语言 作者 鲨鱼狼臧 个人博客首页 鲨鱼狼臧 专栏介绍 2023华为OD机试真题 使用C语言进行解答 专栏每篇文章都包括真题 思路参考 代码分析 订阅有问
  • 随着新技术的产生以及计算机运算速度的不断提高,传统的加密技术已无法满足应用的需求,请问目前新的密码技术有哪些?并简要分析。

    目前新的密码技术包括 1 基于量子力学的密码技术 Quantum cryptography 该技术是利用量子力学原理来保护信息安全 主要应用于信息传输领域 其基本原理是通过量子态来实现信息的加密和解密 从而保证传输过程中不会被窃听或篡改 2
  • c语言如何算字节,C语言中结构字节的计算方法

    在讨论计算方法之前 我们先讨论一些概念 一个是偏移量 另一个是内存对齐 让我来谈谈偏移量 百度百科将其定义为 存储单元的实际地址与其所在的段的段地址之间的距离称为段内偏移量 也称为 有效地址 或抵消 在结构中 它可能是指结构变量中成员地址与
  • 鼠标点击页面出现富强自由等文字JS特效

    在其他博客看到一款JS特效 感觉很不错 所有网上收集过来分享给大家 效果参考本网站 添加点击特效 点击页面会显示 富强 民主 文明 和谐 自由 平等 公正 法治 爱国 敬业 诚信 友善 把以下代码添加到当前主题的head php或foote
  • dubbo zookeeper spring mvc简单整合的工程例子demo

    该demo只是简单的集成 包括了5个工程 都是maven结构的 如下图所示 服务端 dubbo demo server api 服务接口定义工程 dubbo demo server biz 服务接口实现工程 web dubbo server
  • 机房预约系统

    项目要求 源码 头文件 computerRoom h pragma once include
  • 获取IP地址

    IPAddress vAddress null if REGEX URL Match vIP Length lt 1 IPHostEntry vDns Dns GetHostEntry vIP if vDns AddressList Len
  • 推荐系统的循序进阶读物(从入门到精通)

    为了方便大家从理论到实践 从入门到精通 循序渐进系统地理解和掌握推荐系统相关知识 特做了个读物清单 大家可以按此表阅读 也欢迎提出意见和指出未标明的经典文献以丰富各学科需求 为避免初学者疲于奔命 每个方向只推荐几篇经典文献 1 中文综述 了
  • 解决127.0.0.1 已拒绝连接的方法

    127 0 0 1 已拒绝连接 出现这种情况时 打开cmd 在cmd中 ping 127 0 0 1 会出现下图情况 在cmd中ping 127 0 0 1解析出来的是IPV6的 1 原因是windows有个优先解析列表 当ipv6的优先级
  • 电源篇 -- 升压电路 Boost

    感谢阅读本文 在接下来很长的一段时间里 我将陆续分享项目实战经验 从电源 单片机 晶体管 驱动电路 显示电路 有线通讯 无线通信 传感器 原理图设计 PCB设计 软件设计 上位机等 给新手综合学习的平台 给老司机交流的平台 所有文章来源于项
  • Android 读取assets中json文件

    1 通过BufferedReader方式读取 fun getAssetsFile fileName String context Context String 将json数据变成字符串 val stringBuilder StringBui
  • JavaScript-XHR-深入理解

    JavaScript XHR 深入理解 1 XHR Asynchronous JavaScript And XML 初始 1 1 xhr request demo 1 2 status of XHRHttpRequest 1 3 send
  • 深入分析父子线程、进程终止顺序不同产生的结果

    转自 http www jb51 net article 37374 htm 本篇文章是对父子线程 进程终止顺序不同产生的结果进行了详细的分析介绍 需要的朋友参考下 Linux下编程 线程 进程退出顺序问题纷纷扰扰 如果父进程 线程先于子进
  • 创建和管理 Windows Server 2019虚拟机

    1 VMware Workstation 虚拟机的网络模型 只安装虚拟机还是不够的 通常还需要虚拟机能与主机以及其他虚拟机进行通信 如大部分项目实训 都要通过在宿主机中安装 Windows Server 2019虚拟机 然后在宿主机与虚拟机
  • NPM常用命令

    npm install npm g 全局安装最新npm g所有地方都可以用 不用配置环境变量 npm install 下载的模块名 版本号 可以下载安装模块并安装指定的版本 npm config get registry 查看当前使用镜像
  • 经典算法题思路整理-Leetcode力扣经典算法题目整理

    自己能在面试中A4纸写出来的代码才是好代码 不要一味追求复杂度低的代码 如果写都写不出来更不用谈复杂度 第一遍先大概粗过一遍题目思路 第二遍再刷代码 标注出不熟悉的题目 隔天复习 加强记忆 数组 数学 字符串 链表 二叉树 回溯 搜索 动态