leetcode题型分类

1. 两数之和:哈希

2. 两数相加:链表模拟, 数学

3. 无重复字符的最长子串:滑动窗口(双指针+哈希)

4. 寻找两个正序数组的中位数:二分查找

5. 最长回文子串:中心扩展法、DP动态规划(区间DP)

6. Z 字形变换:数学(找规律),模拟

7. 整数反转:数学

8. 字符串转换整数 (atoi):模拟(常见解法),字符串(有限自动机)

9. 回文数:双指针

10. 正则表达式匹配:DP动态规划(线性DP)

11. 盛最多水的容器:单调栈、双指针(常见解法)

12. 整数转罗马数字:模拟、打表

13. 罗马数字转整数:模拟、打表

14. 最长公共前缀:排序(字典序)、分治、模拟

15. 三数之和:排序 + 双指针, 类似与四数之和、三数最接近之和

16. 最接近的三数之和:排序 + 双指针

17. 电话号码的字母组合:DFS(回溯)

18. 四数之和:排序 + 双指针(15进化版)

19. 删除链表的倒数第 N 个结点:栈、双指针

20. 有效的括号:栈

21. 合并两个有序链表:双指针(链表),递归和迭代两种方式

22. 括号生成:DFS

23. 合并K个升序链表:分治、优先队列

24. 两两交换链表中的节点:模拟

25. K 个一组翻转链表:模拟

26. 删除排序数组中的重复项:双指针

27. 移除元素:双指针

28. 实现 strStr():字符串匹配(kmp)

29. 两数相除:二分

30. 串联所有单词的子串:滑动窗口 + 哈希

31. 下一个排列:模拟

32. 最长有效括号:栈、DP动态规划(线性DP)、模拟(不需要额外空间解法)

33. 搜索旋转排序数组:二分查找

34. 在排序数组中查找元素的第一个和最后一个位置:二分查找

35. 搜索插入位置:二分查找

36. 有效的数独:模拟

37. 解数独:DFS(回溯)

38. 外观数列:模拟

39. 组合总和:DFS(回溯)

40. 组合总和 II:DFS(回溯)

41. 缺失的第一个正数:数组(原地置换)

42. 接雨水:单调栈、DP动态规划(递推DP)、双指针(左右最大值)

43. 字符串相乘:模拟

44. 通配符匹配:DP动态规划(线性DP)

45. 跳跃游戏 II:贪心、DP动态规划(线性DP)

46. 全排列:DFS(回溯)

47. 全排列 II:DFS(回溯)

48. 旋转图像:数组(原地置换)

49. 字母异位词分组:排序+map、哈希

50. Pow(x, n):数学(快速幂),迭代和递归两种方法

51. N 皇后:DFS(回溯)

52. N皇后 II:DFS(回溯)

53. 最大子序和:DP动态规划(区间DP)、贪心、滑动窗口

54. 螺旋矩阵:模拟

55. 跳跃游戏:贪心

56. 合并区间:排序

57. 插入区间:模拟

58. 最后一个单词的长度:模拟

59. 螺旋矩阵 II:模拟

60. 排列序列:数学、DFS(回溯)+剪枝

61. 旋转链表:模拟

62. 不同路径:DP动态规划(计数型DP)、记忆化搜索

63. 不同路径 II:DP动态规划(计数型DP)

64. 最小路径和:DP动态规划(序列DP)

65. 有效数字:模拟、自动机

66. 加一:模拟

67. 二进制求和:模拟、位运算

68. 文本左右对齐:模拟

69. x 的平方根:二分查找、袖珍计算器算法、牛顿迭代

70. 爬楼梯:DP动态规划(计数型DP)、数学(快速幂)

71. 简化路径:栈

72. 编辑距离:DP动态规划(序列DP)

73. 矩阵置零:模拟(标记法)

74. 搜索二维矩阵:二分查找

75. 颜色分类:双指针

76. 最小覆盖子串:滑动窗口

77. 组合:DFS(回溯)

78. 子集:DFS(回溯)

79. 单词搜索:DFS(回溯)

80. 删除排序数组中的重复项 II:双指针

81. 搜索旋转排序数组 II:二分查找(排除有序部分)

82. 删除排序链表中的重复元素 II:双指针

83. 删除排序链表中的重复元素:双指针

84. 柱状图中最大的矩形:单调栈

85. 最大矩形:单调栈、动态规划

86. 分隔链表:双指针

87. 扰乱字符串:动态规划(区间DP)

88. 合并两个有序数组:双指针

89. 格雷编码:DFS(回溯)、数学

90. 子集 II:DFS(回溯)

91. 解码方法:DP动态规划(线性DP)

92. 反转链表 II:模拟

93. 复原 IP 地址:DFS(回溯)

94. 二叉树的中序遍历:树的遍历(中序)、递归和迭代两种方法(栈、DFS)

95. 不同的二叉搜索树 II:DFS(回溯)

96. 不同的二叉搜索树:DP动态规划(计数型DP)、数学

97. 交错字符串:DP动态规划(序列DP)

98. 验证二叉搜索树:树的遍历(中序)

99. 恢复二叉搜索树:树的遍历(中序)

100. 相同的树:DFS、BFS

101. 对称二叉树:DFS、BFS

102. 二叉树的层序遍历:树的遍历(DFS、BFS)

103. 二叉树的锯齿形层序遍历:树的遍历(DFS、BFS)

104. 二叉树的最大深度:树的遍历(DFS、BFS)

105. 从前序与中序遍历序列构造二叉树:DFS、树的操作(构造)

106. 从中序与后序遍历序列构造二叉树:DFS、树的操作(构造)

107. 二叉树的层序遍历 II:树的遍历

108. 将有序数组转换为二叉搜索树:树的遍历

109. 有序链表转换二叉搜索树:双指针、树的遍历、分治

110. 平衡二叉树:DFS

111. 二叉树的最小深度:树的遍历

112. 路径总和:DFS(回溯)、BFS、栈

113. 路径总和 II:DFS(回溯)

114. 二叉树展开为链表:树的遍历

115. 不同的子序列:DP动态规划(递推DP)

116. 填充每个节点的下一个右侧节点指针:树的遍历

117. 填充每个节点的下一个右侧节点指针 II:树的遍历

118. 杨辉三角:模拟、数学、DP动态规划(线性DP)

119. 杨辉三角 II:DP动态规划(线性DP)、模拟

120. 三角形最小路径和:DP动态规划(线性DP)

121. 买卖股票的最佳时机:模拟、DP动态规划(线性DP)

122. 买卖股票的最佳时机 II:DP动态规划(线性DP)、贪心

123. 买卖股票的最佳时机 III:DP动态规划(线性DP)

124. 二叉树中的最大路径和:dfs(需要注意点,小于0直接为0)、DP动态规划(树形DP)

125. 验证回文串:双指针

126. 单词接龙 II:DFS(回溯)、BFS

127. 单词接龙:双向BFS、启发式搜索

128. 最长连续序列:哈希、DP动态规划(线性DP)、并查集

129. 求根节点到叶节点数字之和:DFS、BFS

130. 被围绕的区域:DFS、BFS、并查集

131. 分割回文串:DFS(回溯)(优化:DP动态规划(序列DP)、记忆化搜索)

132. 分割回文串 II:DP动态规划(序列DP)

133. 克隆图:DFS、BFS

134. 加油站:模拟、滑动窗口、贪心

135. 分发糖果:贪心

136. 只出现一次的数字:位运算

137. 只出现一次的数字 II:位运算、自动机、哈希

138. 复制带随机指针的链表:模拟、哈希

139. 单词拆分: DP动态规划(背包DP)

140. 单词拆分 II:DP动态规划(背包DP)、记忆化搜索

141. 环形链表:哈希、双指针(快慢指针)

142. 环形链表 II:哈希、双指针(快慢指针)

143. 重排链表:模拟、双指针

144. 二叉树的前序遍历:树的遍历,分迭代和递归两种方法

145. 二叉树的后序遍历:树的遍历,分迭代和递归两种方法

146. LRU 缓存机制:哈希表 + 双向链表

147. 对链表进行插入排序:模拟

148. 排序链表:排序(题解:力扣

149. 直线上最多的点数:哈希

150. 逆波兰表达式求值:栈

151. 翻转字符串里的单词:模拟、栈

152. 乘积最大子数组:DP动态规划(区间DP)

153. 寻找旋转排序数组中的最小值:二分

154. 寻找旋转排序数组中的最小值 II:二分

155. 最小栈:栈

156. 上下翻转二叉树:模拟

157. 用 Read4 读取 N 个字符

159. 至多包含两个不同字符的最长子串:双指针

160. 相交链表:哈希、双指针

162. 寻找峰值:二分查找(证明:力扣

164. 最大间距:排序(基数排序、桶排序)

165. 比较版本号:模拟、双指针

166. 分数到小数:模拟

167. 两数之和 II - 输入有序数组:二分查找、双指针

168. Excel表列名称:数学(进制转换)

169. 多数元素:位运算、哈希、排序、分治、Boyer-Moore 投票算法

171. Excel 表列序号:数学(进制转换)

172. 阶乘后的零:数学(因子分解)

173. 二叉搜索树迭代器:树的遍历

174. 地下城游戏:DP动态规划(线性DP)

179. 最大数:排序(sort应用)

186. 翻转字符串里的单词 II:模拟

187. 重复的DNA序列:滑动窗口、哈希、位运算  (进阶:任意长度)

188. 买卖股票的最佳时机 IV:DP动态规划(线性DP)

189. 旋转数组:数组(原地置换)

190. 颠倒二进制位:位运算、模拟

191. 位1的个数:位运算

198. 打家劫舍:DP动态规划(线性DP)

199. 二叉树的右视图:树的遍历

200. 岛屿数量:DFS、BFS、并查集

201. 数字范围按位与:位运算

202. 快乐数:哈希、双指针、数学

203. 移除链表元素:模拟,分为迭代和递归两种方法

204. 计数质数:打表、埃氏筛、线性筛

205. 同构字符串:哈希

206. 反转链表:模拟(进阶:空间o(1))

207. 课程表:DFS、BFS(拓扑排序)

208. 实现 Trie (前缀树):字典树

209. 长度最小的子数组:滑动窗口,前缀和+二分

210. 课程表 II:DFS、BFS(拓扑排序)

211. 添加与搜索单词 - 数据结构设计:字典树

212. 单词搜索 II:DFS、字典树+DFS

213. 打家劫舍 II:DP动态规划(边界处理,线性DP)

214. 最短回文串:哈希、字符串匹配(KMP)

215. 数组中的第K个最大元素:排序(TOPK)

216. 组合总和 III:DFS(回溯)、位运算(二进制)

217. 存在重复元素;哈希、排序

218. 天际线问题:扫描线+优先队列

219. 存在重复元素 II:滑动窗口

220. 存在重复元素 III:滑动窗口、桶

221. 最大正方形:DP动态规划(线性DP)

222. 完全二叉树的节点个数:树的遍历

223. 矩形面积:数学(矩阵重叠面积)

224. 基本计算器:栈

225. 用队列实现栈:队列

226. 翻转二叉树:DFS、BFS

227. 基本计算器 II:栈

228. 汇总区间:模拟

229. 求众数 II:摩尔投票法

230. 二叉搜索树中第K小的元素:树的遍历(中序)

231. 2的幂:位运算(二进制)

232. 用栈实现队列:栈

233. 数字 1 的个数:数学、DP动态规划(数位DP)

234. 回文链表:模拟(转换为数组)、双指针

235. 二叉搜索树的最近公共祖先:DFS、二叉搜索树性质

236. 二叉树的最近公共祖先:DFS、哈希

237. 删除链表中的节点:模拟

238. 除自身以外数组的乘积:模拟(前缀积、后缀积)

239. 滑动窗口最大值:优先队列、单调队列

240. 搜索二维矩阵 II:二分

241. 为运算表达式设计优先级:分治、DP动态规划(区间DP)

242. 有效的字母异位词:排序、哈希

243. 最短单词距离:模拟

244. 最短单词距离 II:哈希

245. 最短单词距离 III:模拟

246. 中心对称数:哈希

247. 中心对称数 II:DP动态规划()

248. 中心对称数 III:DFS、BFS

249. 群组偏移字符串:数学(规律)、哈希

250. 统计同值子树:树的遍历

252. 会议室:排序

253. 会议室 II:排序

254. 因子的组合:DFS(回溯)

255. 验证前序遍历序列二叉搜索树:单调栈

256. 粉刷房子:DP动态规划(序列DP)

257. 二叉树的所有路径:DFS、BFS

258. 各位相加:数学(规律)

259. 较小的三数之和:双指针

260. 只出现一次的数字 III:数学(分组异或)、位运算

263. 丑数:数学

264. 丑数 II:优先队列、DP动态规划(线性DP)

265. 粉刷房子 II:DP动态规划(序列DP)

266. 回文排列:哈希

267. 回文排列 II:DFS(回溯)

268. 丢失的数字:二分查找、排序、哈希、位运算、数学

270. 最接近的二叉搜索树值:二分查找

272. 最接近的二叉搜索树值 II:树的遍历 + 优先队列

273. 整数转换英文表示:分治

274. H 指数:排序

275. H 指数 II:二分查找

276. 栅栏涂色:DP动态规划(计数型DP)

277. 搜索名人:DFS

278. 第一个错误的版本:二分查找

279. 完全平方数:DP动态规划(背包DP)

280. 摆动排序:排序

281. 锯齿迭代器:队列

282. 给表达式添加运算符:DFS(回溯)

283. 移动零:双指针

284. 窥探迭代器:队列

285. 二叉搜索树中的顺序后继:树的遍历

286. 墙与门:DFS、BFS

287. 寻找重复数:二分、位运算(二进制)、双指针(快慢指针)

289. 生命游戏:模拟、位运算

290. 单词规律:哈希

291. 单词规律 II:DFS(回溯)

292. Nim 游戏:数学(推理)、博弈论

293. 翻转游戏:模拟

294. 翻转游戏 II:DFS(回溯)

295. 数据流的中位数:优先队列、双指针

297. 二叉树的序列化与反序列化:DFS、BFS

298. 二叉树最长连续序列:DFS

299. 猜数字游戏:哈希

300. 最长递增子序列:DP动态规划(线性DP)、贪心+二分查找、DP动态规划+二分查找

301. 删除无效的括号:DFS(回溯)、BFS

302. 包含全部黑色像素的最小矩形:DFS、BFS

303. 区域和检索 - 数组不可变:前缀和

304. 二维区域和检索 - 矩阵不可变:前缀和

305. 岛屿数量 II:并查集

306. 累加数:DFS(回溯)

307. 区域和检索 - 数组可修改:线段树

308. 二维区域和检索 - 可变:前缀和

309. 最佳买卖股票时机含冷冻期:DP动态规划(线性DP)

310. 最小高度树:BFS(拓扑)

311. 稀疏矩阵的乘法:模拟

312. 戳气球:记忆化搜索、DP动态规划(区间DP)

313. 超级丑数:DP动态规划(线性DP)

314. 二叉树的垂直遍历:树的遍历

315. 计算右侧小于当前元素的个数:排序(归并)、线段树、树状数组、二叉搜索树

316. 去除重复字母:单调栈

317. 离建筑物最近的距离:BFS

318. 最大单词长度乘积:位运算(位 + 预计算)

319. 灯泡开关:数学

320. 例举单词的全部缩写:位运算、DFS(回溯)

321. 拼接最大数:单调栈

322. 零钱兑换:DP动态规划(背包DP)、记忆化搜索

323. 无向图中联通分量的数目:并查集

324. 摆动排序 II:排序、快速选择+3-way-partition

325. 和等于k的最长子数组长度:前缀和

326. 3的幂:数学、打表、倍数/约数

327. 区间和的个数:排序(归并)、线段树、前缀和+二分

328. 奇偶链表:模拟

329. 矩阵中的最长递增路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值