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. 矩阵中的最长递增路径:DFS、BFS(拓扑)

330. 按要求补齐数组:贪心

331. 验证二叉树的前序序列化:栈、模拟(计数)

332. 重新安排行程:欧拉路径(Hierholzer 算法)

333. 最大 BST 子树:DFS、DP动态规划(树形DP)

334. 递增的三元子序列:贪心

335. 路径交叉:滑动窗口

336. 回文对:字典树、枚举前缀后缀

337. 打家劫舍 III:DP动态规划(树形DP)

338. 比特位计数:位运算(Brian Kernighan 算法)、DP动态规划(线性DP)

339. 嵌套列表权重和:DFS

340. 最长最多K个无重复字符的字符串长度:滑动窗口 + 双指针

341. 扁平化嵌套列表迭代器:DFS、栈

342. 4的幂:位运算(二进制)、数学(取模性质)

343. 整数拆分:DP动态规划(背包DP、递推DP)、数学

344. 反转字符串:双指针

345. 反转字符串中的元音字母:双指针

346. 数据流中的移动平均值:队列

347. 前 K 个高频元素:排序、优先队列

349. 两个数组的交集:哈希、排序+双指针

350. 两个数组的交集 II:哈希、排序+双指针

351. 安卓系统手势解锁:DFS

352. 将数据流变为多个不相交区间:哈希+并查集

353. 贪吃蛇:队列(双端队列)

354. 俄罗斯套娃信封问题:DP动态规划(线性DP)

355. 设计推特:哈希 + 链表

357. 计算各个位数不同的数字个数:DP动态规划(数位DP:力扣

358. K 距离间隔重排字符串:哈希

359. 日志速率限制器:哈希

360. 有序转化数组:

361. 轰炸敌人:

362. 敲击计数器:

363. 矩形区域不超过 K 的最大数值和:前缀和、二分查找

365. 水壶问题:DFS、数学(贝祖定力)

366. 寻找二叉树的叶子节点:DFS、BFS

367. 有效的完全平方数:二分查找、牛顿迭代法

368. 最大整除子集:DP动态规划(序列DP)

369. 给单链表加一:模拟

370. 区间加法:差分

371. 两整数之和:位运算

372. 超级次方:数学(快速幂)

373. 查找和最小的K对数字:双指针、优先队列

374. 猜数字大小:二分查找

375. 猜数字大小 II:DP动态规划(区间DP)、极小化极大算法

376. 摆动序列:DP动态规划(线性DP)

377. 组合总和 Ⅳ:DP动态规划(01背包)

378. 有序矩阵中第 K 小的元素:排序(堆)、二分、优先队列

379. 电话目录管理系统:哈希

380. O(1) 时间插入、删除和获取随机元素:哈希+动态数组

381. O(1) 时间插入、删除和获取随机元素 - 允许重复:哈希

382. 链表随机节点:蓄水池抽样算法

383. 赎金信:哈希、模拟

384. 打乱数组:模拟、 Fisher-Yates 洗牌算法

385. 迷你语法分析器:栈

386. 字典序排数:DFS

387. 字符串中的第一个唯一字符:哈希、队列

388. 文件的最长绝对路径:模拟(栈)、前缀和

389. 找不同:数学(计数)、数学(求和)、位运算

390. 消除游戏:数学(找规律)

391. 完美矩形:扫描线

392. 判断子序列:双指针、DP动态规划(序列DP)、模拟(预处理+二分)

393. UTF-8 编码验证:位运算、有限状态自动机

394. 字符串解码:栈、DFS

395. 至少有 K 个重复字符的最长子串:分治、滑动窗口

396. 旋转函数:数学(找规律)、模拟(错位相减法)

397. 整数替换:BFS、位运算、数学(找规律)

398. 随机数索引:水塘抽样法

399. 除法求值:并查集、DFS

400. 第 N 位数字:数学(找规律)

401. 二进制手表:位运算(二进制)、DFS(回溯)

402. 移掉 K 位数字:单调栈

403. 青蛙过河:DP动态规划(线性DP)、记忆化搜索(+二分查找)

404. 左叶子之和:DFS、BFS

405. 数字转换为十六进制数:位运算

406. 根据身高重建队列:贪心

407. 接雨水 II:优先队列、并查集、最小堆 + 木桶短板

409. 最长回文串:哈心、贪心

410. 分割数组的最大值:DP动态规划(区间DP)、贪心+二分查找。

412. Fizz Buzz:模拟

413. 等差数列划分:DP动态规划(区间DP)、双指针、差分

414. 第三大的数:排序(TOPK)、优先队列

415. 字符串相加:模拟

416. 分割等和子集:DP动态规划(背包DP)

417. 太平洋大西洋水流问题:DFS、BFS

419. 甲板上的战舰:DFS、模拟(战舰头部判断)

420. 强密码检验器:DP动态规划(状压DP)、优先队列

421. 数组中两个数的最大异或值:哈希、字典树

423. 从英文中重建数字:哈希

424. 替换后的最长重复字符:双指针

427. 建立四叉树:DFS

428.序列化和反序列化 N 叉树:DFS、树的遍历(层次)

429. N 叉树的层序遍历:DFS、BFS

430. 扁平化多级双向链表:DFS

431. 将 N 叉树编码为二叉树:DFS、BFS

433. 最小基因变化:DFS、BFS

434. 字符串中的单词数:模拟(原地法)

435. 无重叠区间:DP动态规划(序列DP)、贪心

436. 寻找右区间:排序+二分

437. 路径总和 III:DFS、前缀和

438. 找到字符串中所有字母异位词:滑动窗口

440. 字典序的第K小数字:字典树+二分

441. 排列硬币:二分查找

442. 数组中重复的数据:哈希、数组(原地法)

443. 压缩字符串:双指针

444. 序列重建:拓扑

445. 两数相加 II:栈

446. 等差数列划分 II - 子序列:DP动态规划(序列DP)+冗斥定理(力扣

447. 回旋镖的数量:哈希

448. 找到所有数组中消失的数字:数组(原地法)

449. 序列化和反序列化二叉搜索树:BFS、DFS、树的操作(重建)

450. 删除二叉搜索树中的节点:树的操作(删除)

451. 根据字符出现频率排序:排序、模拟(优先队列)

452. 用最少数量的箭引爆气球:贪心

453. 最小操作次数使数组元素相等:数学(找规律)、DP动态规划(线性DP)

454. 四数相加 II:哈希

455. 分发饼干:贪心

456. 132 模式:单调栈

457. 环形数组是否存在循环:双指针(快慢指针)

458. 可怜的小猪:数学(找规律)

459. 重复的子字符串:字符串匹配(KMP)

460. LFU 缓存:哈希表 + 平衡二叉树、双哈希表、桶排序+双向链表

461. 汉明距离:位运算

462. 最少移动次数使数组元素相等 II:数学(中位数)

463. 岛屿的周长:DFS

464. 我能赢吗:DP动态规划(状压DP)

466. 统计重复个数:DP动态规划(序列DP)

467. 环绕字符串中唯一的子字符串:DP动态规划(线性DP)、前缀和

468. 验证IP地址:正则表达式、分治

470. 用 Rand7() 实现 Rand10():拒绝采样

471. 编码最短长度的字符串:DP动态规划(区间DP)

472. 连接词:字典树+DFS、记忆化DFS(DFS+哈希)

473. 火柴拼正方形:DFS(回溯)

474. 一和零:DP动态规划(01背包DP)

475. 供暖器:二分查找、双指针

476. 数字的补数:位运算

477. 汉明距离总和:位运算(二进制)

478. 在圆内随机生成点:数学(拒绝采用)、数学(计算分布函数)

479. 最大回文数乘积:数学

480. 滑动窗口中位数:滑动窗口、双优先队列 + 延迟删除

481. 神奇字符串:模拟

482. 密钥格式化:模拟

483. 最小好进制:数学、二分查找

484. 寻找排列:栈

485. 最大连续 1 的个数:模拟

486. 预测赢家:DP动态规划(区间DP)

487. 最大连续 1 的个数II:滑动窗口

488. 祖玛游戏:DFS(回溯)

489. 扫地机器人:DFS(回溯)

490. 迷宫:DFS、BFS

491. 递增子序列:DFS(回溯)

492. 构造矩形:数学

493. 翻转对:排序(归并)、树状数组

494. 目标和:DFS(回溯)、DP动态规划(01背包DP)、记忆化搜索

495. 提莫攻击:模拟、模拟

496. 下一个更大元素 I:单调栈

497. 非重叠矩形中的随机点:二分查找 + 前缀和

498. 对角线遍历:模拟、数学(对角线迭代和翻转)

499. 迷宫II:BFS

500. 键盘行:模拟

501. 二叉搜索树中的众数:树的遍历(中序),进阶:空间复杂度优化

502. IPO:贪心 + 堆、贪心 + 优先队列

503. 下一个更大元素 II:单调栈

504. 七进制数:数学

505. 迷宫 II:BFS、DFS

506. 相对名次:哈希、排序

507. 完美数:数学(欧拉定理)、模拟(枚举)

508. 出现次数最多的子树元素和:树的遍历 + 哈希

509. 斐波那契数:DP动态规划(计数型DP)、数据(快速幂)、数学(通项公式)

513. 找树左下角的值:树的遍历

514. 自由之路:DP动态规划(区间DP)

515. 在每个树行中找最大值:树的遍历(层次遍历)

516. 最长回文子序列:DP动态规划(区间DP,力扣)、中心扩展

517. 超级洗衣机:贪心

518. 零钱兑换 II:DP动态规划(完全背包DP)

519. 随机翻转矩阵:数学(分块)、数学(二维数组转化为一维数组)

520. 检测大写字母:模拟

521. 最长特殊序列 Ⅰ:数学(推理)

522. 最长特殊序列 II:排序 + 哈希、 模拟

523. 连续的子数组和:前缀和 + 哈希

524. 通过删除字母匹配到字典里最长单词:双指针

525. 连续数组:前缀和 + 哈希

526. 优美的排列:DFS(回溯)、DP动态规划(状态压缩DP,力扣)+状态压缩

528. 按权重随机选择:前缀和 + 二分

529. 扫雷游戏:DFS、BFS

530. 二叉搜索树的最小绝对差:树的遍历

532. 数组中的 k-diff 数对:哈希、排序 + 双指针

535. TinyURL 的加密与解密:数学(计数、随机数)、哈希

536. 从字符串生成二叉树:DFS

537. 复数乘法:数学

538. 把二叉搜索树转换为累加树:树的遍历(中序、morris)

539. 最小时间差:数学(转换)

540. 有序数组中的单一元素:二分查找

541. 反转字符串 II:模拟

542. 01 矩阵:DP动态规划(递推DP)、BFS

543. 二叉树的直径:DFS、DP动态规划(树形DP)

546. 移除盒子:DP动态规划(区间DP)

547. 省份数量:DFS、BFS、并查集

548. 将数组分割成和相等的子数组:哈希

551. 学生出勤记录 I:模拟

552. 学生出勤记录 II:DP动态规划(状压DP)、记忆化搜索、数学(快速幂)

553. 最优除法:贪心、数学

554. 砖墙:哈希

555. 分割连接字符串:

556. 下一个更大元素 III:数学、单调栈

557. 反转字符串中的单词 III:数学(原地法)

558. 四叉树交集:DFS

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

560. 和为K的子数组:前缀和 + 哈希

561. 数组拆分 I:贪心(排序)

562. 矩阵中最长的连续1线段:

563. 二叉树的坡度:树的遍历(后续)

564. 寻找最近的回文数:数学

565. 数组嵌套:并查集、双指针 + 剪枝

566. 重塑矩阵:模拟、数学(二维数组转化为一维数组)

567. 字符串的排列:滑动窗口、双指针

572. 另一棵树的子树:DFS、哈希(树)

575. 分糖果:哈希、排序、模拟

576. 出界的路径数:DP动态规划(线性DP)、记忆化搜索

581. 最短无序连续子数组:双指针 + 排序、单调栈

583. 两个字符串的删除操作:DP动态规划(序列DP)、数学(最长公共子序列)

587. 安装栅栏:凸包(jarvis算法、Graham 扫描)

589. N 叉树的前序遍历:N叉树的遍历

590. N 叉树的后序遍历:N叉树的遍历

591. 标签验证器:栈 + 模拟、栈 + 状态机

592. 分数加减运算:数学(通分)

593. 有效的正方形:数学(四边形)

594. 最长和谐子序列:预排序 + 双指针、哈希、模拟

598. 范围求和 II:贪心、数学

599. 两个列表的最小索引总和:哈希

600. 不含连续1的非负整数:DP动态规划(数位DP)

605. 种花问题:贪心、模拟、数学(计数)

606. 根据二叉树创建字符串:树的遍历(前序)、DFS

609. 在系统中查找重复文件:哈希

611. 有效三角形的个数:排序 + 二分、排序 + 双指针、数学(NTT快速卷积)

617. 合并二叉树:DFS、BFS、树的操作(合并)

621. 任务调度器:模拟、优先队列

622. 设计循环队列:模拟

623. 在二叉树中增加一行:树的遍历(DFS、BFS)

624. 数组列表中的最大距离:数学(推理)

625. 最小因式分解:数学

628. 三个数的最大乘积:排序

629. K个逆序对数组:DP动态规划(递推DP) + 前缀和

630. 课程表 III:优先队列 + 贪心

632. 最小区间:哈希 + 滑动窗口、优先队列 + 贪心

633. 平方数之和:二分查找、数学(质因子分解、费马平方和)

636. 函数的独占时间:栈

637. 二叉树的层平均值:树的遍历(层次)

638. 大礼包:DFS(回溯)、DP动态规划(状压DP)

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

640. 求解方程:数学(拆分方程)、模拟

641. 设计循环双端队列:数组 + 双指针、双链表

643. 子数组最大平均数 I:滑动窗口、前缀和

645. 错误的集合:排序、哈希、位运算、数学

646. 最长数对链:DP动态规划(线性DP)、贪心

647. 回文子串:中心扩展、DP动态规划(序列DP)

648. 单词替换:前缀和 + 哈希、 字典树

649. Dota2 参议院:贪心

650. 只有两个键的键盘:DP动态规划(线性DP)、数学、打表

652. 寻找重复的子树 :DFS(二叉树序列化) + 哈希

653. 两数之和 IV - 输入 BST:哈希、BFS、哈希 + BFS、DFS、哈希 + DFS

654. 最大二叉树:DFS、单调栈、树的操作(构建)

655. 输出二叉树:树的遍历(DFS、BFS)

657. 机器人能否返回原点:模拟

658. 找到 K 个最接近的元素:滑动窗口、二分查找、数学(删除法)

659. 分割数组为连续子序列:贪心、哈希 + 优先队列(堆)

661. 图片平滑器:模拟

662. 二叉树最大宽度:树的遍历(层次)

664. 奇怪的打印机:DP动态规划(区间DP)

665. 非递减数列:贪心、模拟

666. 路径之和IV:树的遍历(DFS)

667. 优美的排列 II:数学(找规律)

668. 乘法表中第k小的数:二分查找

669. 修剪二叉搜索树:模拟、树的操作(修剪)

670. 最大交换:单调队列、贪心、模拟

671. 二叉树中第二小的节点:树的遍历、递归

672. 灯泡开关 Ⅱ:位运算、记忆化搜索、数学(找规律)

673. 最长递增子序列的个数:DP动态规划(序列DP)、贪心+前缀和+二分

674. 最长连续递增序列:贪心、DP动态规划(线性DP)

675. 为高尔夫比赛砍树:BFS、A*搜索

676. 实现一个魔法字典:字典树、哈希

677. 键值映射:字典树

678. 有效的括号字符串:DP动态规划(线性DP)、栈、贪心、模拟

679. 24 点游戏:DFS(回溯)

680. 验证回文字符串 Ⅱ:双指针

682. 棒球比赛:栈、模拟

683. K 个关闭的灯泡:线段树

684. 冗余连接:并查集

685. 冗余连接 II:并查集

686. 重复叠加字符串匹配:字符串匹配(kmp)

687. 最长同值路径:DFS(递归)、DP动态规划(树形DP)

688. “马”在棋盘上的概率:DP动态规划(递推DP)、数学(快速幂)、DFS(回溯)

689. 三个无重叠子数组的最大和:DP动态规划(递推DP、线性DP) + 前缀和

690. 员工的重要性:DFS、BFS、并查集

691. 贴纸拼词:DFS(回溯)、DP动态规划(状压DP)

692. 前K个高频单词:排序 + 哈希、优先队列

693. 交替位二进制数:数学(除2)、位运算

695. 岛屿的最大面积:DFS、BFS

696. 计数二进制子串:数学(计数)、模拟(按字符分组)

697. 数组的度:哈希

698. 划分为k个相等的子集:DP动态规划(状压DP)、DFS(回溯)【和划分为2个等和的序列需有区分度】

699. 掉落的方块:模拟、数学(平方根分解)

700. 二叉搜索树中的搜索:树的遍历

701. 二叉搜索树中的插入操作:模拟、树的操作(插入)

703. 数据流中的第 K 大元素:优先队列

704. 二分查找:二分查找

705. 设计哈希集合:简单数组

706. 设计哈希映射:简单数组

707. 设计链表:单链表、双链表

709. 转换成小写字母:模拟

710. 黑名单中的随机数:二分查找

711. 不同岛屿的数量 II:DFS、BFS

712. 两个字符串的最小ASCII删除和:DP动态规划(序列DP)

713. 乘积小于K的子数组:二分查找、双指针、滑动窗口

714. 买卖股票的最佳时机含手续费:DP动态规划(线性DP、滚动数组)、贪心

715. Range 模块:线段树、红黑树、有序字典合并

716. 最大栈:栈

717. 1比特与2比特字符:模拟

718. 最长重复子数组:DP动态规划(序列DP)、滑动窗口、后缀数组

719. 找出第 k 小的距离对:二分查找 + 前缀和、二分查找 + 双指针

720. 词典中最长的单词:哈希、前缀树 + DFS

721. 账户合并:哈希表 + 并查集、并查集、DFS

722. 删除注释:状态机、数学(推理)

723. 粉碎糖果:模拟

724. 寻找数组的中心下标:前缀和、模拟

725. 分隔链表:模拟

726. 原子的数量:栈 + 哈希、模拟

727. 最小窗口子序列:DP动态规划()

728. 自除数:数学、模拟

729. 我的日程安排表 I:平衡树、数学(模拟、边界计算)、线段树、哈希

730. 统计不同回文子序列:DP动态规划(区间DP)

731. 我的日程安排表 II:数学(模拟、边界计算)、二分查找、差分、线段树

732. 我的日程安排表 III:数学(模拟、边界计算)、线段树

733. 图像渲染:DFS、BFS

734. 句子相似性:哈希

735. 行星碰撞:栈、模拟

736. Lisp 语法解析:栈

737. 句子相似性 II:并查集

738. 单调递增的数字:贪心

739. 每日温度:单调栈、模拟

740. 删除并获得点数:DP动态规划(序列DP)、排序 + DP动态规划

741. 摘樱桃:记忆化搜索、DP动态规划(线性DP)

743. 网络延迟时间:图(Dijkstra)、BFS

744. 寻找比目标字母大的最小字母:二分查找

745. 前缀和后缀搜索:字典树、哈希

746. 使用最小花费爬楼梯:DP动态规划(计数型DP)

747. 至少是其他数字两倍的最大数:贪心、模拟

748. 最短补全词:哈希

749. 隔离病毒:模拟、BFS + 并查集、DFS + 优先队列

750. 角矩形的数量:DFS、DP动态规划(线性DP)

752. 打开转盘锁:启发式搜索、BFS

753. 破解保险箱:欧拉路径

754. 到达终点数字:数学(找规律)

755. 倒水:模拟

756. 金字塔转换矩阵:DFS(回溯)、DFS(回溯) + 位运算

757. 设置交集大小至少为2:贪心

761. 特殊的二进制序列:贪心

762. 二进制表示中质数个计算置位:位运算(汉明重量)

763. 划分字母区间:贪心、哈希

764. 最大加号标志:DP动态规划(线性DP)

765. 情侣牵手:并查集 + 贪心

766. 托普利茨矩阵:模拟

767. 重构字符串:数学(计数) + 贪心、排序、优先队列 + 贪心

768. 最多能完成排序的块 II:滑动窗口、排序 + 数学(计数)

769. 最多能完成排序的块:模拟

770. 基本计算器 IV:分治、栈

771. 宝石与石头:哈希、正则、位运算、枚举

773. 滑动谜题:BFS、启发式搜索、A*搜索

774. 最小化去加油站的最大距离:二分查找、优先队列

775. 全局倒置与局部倒置:贪心、二分查找、排序

776. 拆分二叉搜索树:树的操作(拆分)、DFS

777. 在LR字符串中交换相邻字符:双指针、数学(推理)

778. 水位上升的泳池中游泳:二分查找、优先队列、并查集

779. 第K个语法符号:数学(找规律)、DP动态规划(线性DP)

780. 到达终点:数学(辗转相除法、取模变体)

781. 森林中的兔子:贪心、数学(找规律)

782. 变为棋盘:数学(分析)

783. 二叉搜索树节点最小距离:树的遍历(中序)

784. 字母大小写全排列:DFS

785. 判断二分图:DFS、BFS、并查集

786. 第 K 个最小的素数分数:分治、二分、优先队列

787. K 站中转内最便宜的航班:记忆化搜索、DP动态规划(区间DP)、BFS + 剪枝

788. 旋转数字:DP动态规划(递推DP)、数学

789. 逃脱阻碍者:数学(曼哈顿距离)

790. 多米诺和托米诺平铺:DP动态规划(计数型DP)、数学(矩阵快速幂)

791. 自定义字符串排序:排序 + 哈希、哈希(统计字符数量重新构造字符串)

792. 匹配子序列的单词数:字典树、二分、哈希 + 桶

793. 阶乘函数后 K 个零:数学(找规律)、数学 + 二分

794. 有效的井字游戏:数学(分析)、模拟

795. 区间子数组个数:DP动态规划(递推DP)、前缀和、数学(计数)、滑动窗口

796. 旋转字符串:字符串匹配(kmp)、数学(判断子串)、穷举法

797. 所有可能的路径:DFS(回溯)、BFS

798. 得分最高的最小轮调:差分

799. 香槟塔:模拟、DP动态规划(线性DP)

801. 使序列递增的最小交换次数:DP动态规划(线性DP)

802. 找到最终的安全状态:DFS + 三色标记法、拓扑排序

803. 打砖块:并查集、DFS

804. 唯一摩尔斯密码词:哈希

805. 数组的均值分割:DP动态规划(01背包)、折半搜索 + 归并排序、DFS

806. 写字符串需要的行数:模拟

807. 保持城市天际线:贪心

808. 分汤:DP动态规划(递推DP)、DFS+memo

809. 情感丰富的文字:模拟、双指针

810. 黑板异或游戏:数学(异或)

811. 子域名访问计数:哈希

812. 最大三角形面积:枚举、数学(海伦公式)

813. 最大平均值和的分组:DP动态规划(区间DP)、记忆化搜索

814. 二叉树剪枝:树的遍历、DFS、树的操作(剪枝)

815. 公交路线:BFS

816. 模糊坐标:枚举、模拟

817. 链表组件:哈希

818. 赛车:DP动态规划(区间DP)、最短路

819. 最常见的单词:哈希、模拟、数学(计数)

820. 单词的压缩编码:字典树、数学(分析)

821. 字符的最短距离:中心扩展法、贪心、数学(窗口划分)

822. 翻转卡片游戏:哈希

823. 带因子的二叉树:DP动态规划(树形DP)、贪心(排序+字典)

824. 山羊拉丁文:模拟

825. 适龄的朋友:数学(计数)、排序 + 二分查找、桶排序

826. 安排工作以达到最大收益:双指针 + 排序

827. 最大人工岛:并查集、DFS

828. 统计子串中的唯一字符:DP动态规划(递推DP)、数学(找规律)

829. 连续整数求和:数学(因式分解)

830. 较大分组的位置:正则、位运算、栈、滑动窗口、模拟

831. 隐藏个人信息:模拟、正则

832. 翻转图像:模拟

833. 字符串中的查找与替换:模拟、贪心

834. 树中距离之和:动态规划(树形DP)、DFS(复杂DFS)

835. 图像重叠

836. 矩形重叠:数学(反思维)

837. 新21点:DP动态规划(递推DP) + 差分/滑动窗口/前缀和

838. 推多米诺:模拟、BFS、双指针

839. 相似字符串组:并查集

840. 矩阵中的幻方:模拟、进阶(数量加大)

841. 钥匙和房间:DFS、BFS

842. 将数组拆分成斐波那契序列:DFS(回溯) + 剪枝

843. 猜猜这个单词:启发式极小化极大算法

844. 比较含退格的字符串:模拟、双指针

845. 数组中的最长山脉:DP动态规划(递推DP)、枚举、单调栈

846. 一手顺子:哈希

847. 访问所有节点的最短路径:BFS、Floyd + DP动态规划(状压DP)、A*算法、启发式搜索

848. 字母移位:前缀和、DP动态规划(递推DP) + 数学(取余)

849. 到最近的人的最大距离:DP动态规划(递推DP)、贪心、双指针

850. 矩形面积 II:数学(冗斥定理)、线段树

851. 喧闹和富有:记忆化搜索、拓扑排序

852. 山脉数组的峰顶索引:二分、枚举

853. 车队:贪心、优先队列、排序

854. 相似度为 K 的字符串:DP动态规划(序列DP)、BFS、DFS

855. 考场就座:贪心、优先队列 + 哈希

856. 括号的分数:栈、分治

857. 雇佣 K 名工人的最低成本:贪心、优先队列

858. 镜面反射:模拟、数学

859. 亲密字符串:枚举、双指针 + 哈希

860. 柠檬水找零:贪心

861. 翻转矩阵后的得分:贪心、位运算 + 数学(原地统计)

862. 和至少为 K 的最短子数组:滑动窗口、双端队列、线段树、单调栈

863. 二叉树中所有距离为 K 的结点:DFS、BFS

864. 获取所有钥匙的最短路径:BFS + 状态压缩、图(Dijkstra)

865. 具有所有最深节点的最小子树:DFS、DP动态规划(树形DP)

866. 回文素数:数学(推理)、枚举

867. 转置矩阵:模拟

868. 二进制间距:位运算

869. 重新排序得到 2 的幂:数学(计数)、排列组合、位运算

870. 优势洗牌:贪心、排序 + 双指针

871. 最低加油次数:DP动态规划(线性DP)、栈

872. 叶子相似的树:树的遍历(DFS、BFS)

873. 最长的斐波那契子序列的长度:DP动态规划(序列DP)

874. 模拟行走机器人:模拟、哈希

875. 爱吃香蕉的珂珂:二分查找

876. 链表的中间结点:双指针(快慢指针)

877. 石子游戏:DP动态规划(区间DP)、数学、记忆化搜索

878. 第 N 个神奇数字:数学、二分查找

879. 盈利计划:DP动态规划(背包)、记忆化搜索

880. 索引处的解码字符串:数学(逆向求解)

881. 救生艇:贪心

882. 细分图中的可到达结点:图(Dijkstra)、BFS + 剪枝

883. 三维形体投影面积:模拟(数学)

884. 两句话中的不常见单词:哈希

885. 螺旋矩阵 III:模拟

886. 可能的二分法:DFS、BFS、并查集

887. 鸡蛋掉落:DP动态规划(序列DP) + 二分

888. 公平的糖果棒交换:哈希、双指针

889. 根据前序和后序遍历构造二叉树:DFS、树的操作(构造)

890. 查找和替换模式:哈希

891. 子序列宽度之和:数学(推导)

892. 三维形体的表面积:模拟

893. 特殊等价字符串组:数学(计数)

894. 所有可能的满二叉树:DP动态规划、记忆化搜索

895. 最大频率栈:哈希 + 栈

896. 单调数列:模拟

897. 递增顺序搜索树:树的遍历

898. 子数组按位或操作:DP动态规划(序列DP)、集合、位运算

899. 有序队列:数学(找规律)

900. RLE 迭代器:模拟、栈

901. 股票价格跨度:单调栈、跳表

902. 最大为 N 的数字组合:DP动态规划(数位DP)、数学

903. DI 序列的有效排列:DP动态规划(区间DP、线性DP)、DFS(回溯)

904. 水果成篮:滑动窗口、模拟

905. 按奇偶排序数组:双指针、数学(原地法)

906. 超级回文数:数学(找规律)

907. 子数组的最小值之和:单调栈

908. 最小差值 I:数学、贪心

909. 蛇梯棋:图(BFS)、模拟

910. 最小差值 II:贪心

911. 在线选举:预处理 + 二分

912. 排序数组:排序(快排、堆排)

913. 猫和老鼠:DP动态规划(区间DP)、记忆化搜索

914. 卡牌分组:数学(最大公约数)

915. 分割数组:单调队列、辅助数组

916. 单词子集:数学(计数)、哈希

917. 仅仅反转字母:栈、双指针

918. 环形子数组的最大和:前缀和 + 单调队列、邻接数组、Kadane算法

919. 完全二叉树插入器:双端队列、树的遍历(层次变种)、树的操作(插入)

920. 播放列表的数量:DP动态规划(线性DP)

921. 使括号有效的最少添加:栈、数学(平衡法)

922. 按奇偶排序数组 II:双指针

923. 三数之和的多种可能:三指针、数学

924. 尽量减少恶意软件的传播:并查集、DFS

925. 长按键入:双指针、模拟

926. 将字符串翻转到单调递增:DP动态规划(线性DP)、前缀和、贪心

927. 三等分:二分 + 逆序三指针、双指针

928. 尽量减少恶意软件的传播 II:DFS、并查集

929. 独特的电子邮件地址:哈希

930. 和相同的二元子数组:前缀和 + 哈希、滑动窗口

931. 下降路径最小和:DP动态规划(线性DP)、记忆化搜索

932. 漂亮数组:分治、位运算

933. 最近的请求次数:二分、队列、模拟

934. 最短的桥:DFS + BFS

935. 骑士拨号器:DP动态规划(计数型DP)、记忆化搜索

936. 戳印序列:拓扑、模拟、数学(逆推)

937. 重新排列日志文件:自定义排序

938. 二叉搜索树的范围和:树的遍历(DFS、BFS)

939. 最小面积矩形:哈希、列排序

940. 不同的子序列 II:DP动态规划(计数型DP)

941. 有效的山脉数组:双指针

942. 增减字符串匹配:贪心、双指针

943. 最短超级串:DP动态规划(状压DP)

944. 删列造序:贪心

945. 使数组唯一的最小增量:贪心、并查集、数学(计数)、排序

946. 验证栈序列:栈、贪心、模拟

947. 移除最多的同行或同列石头:DFS、并查集

948. 令牌放置:贪心、双指针

949. 给定数字能组成的最大时间:枚举

950. 按递增顺序显示卡牌:模拟

951. 翻转等价二叉树:树的遍历(标准态)

952. 按公因数计算最大组件大小:并查集

953. 验证外星语词典:哈希

954. 二倍数对数组:哈希 + 排序

955. 删列造序 II:贪心、模拟

956. 最高的广告牌:DP动态规划(01背包)、折半搜索

957. N 天后的牢房:位运算、模拟、数学(找规律)

958. 二叉树的完全性检验:树的遍历

959. 由斜杠划分区域:并查集、DFS

960. 删列造序 III:DP动态规划(线性DP)

961. 重复 N 次的元素:数学(异或)、数学(计数)、哈希

962. 最大宽度坡:单调栈、二分查找

963. 最小面积矩形 II:数学(推导)

964. 表示数字的最少运算符:DP动态规划(数位DP)、记忆化搜索

965. 单值二叉树:树的遍历

966. 元音拼写检查器:哈希

967. 连续差相同的数字:DFS(回溯)、队列 + BFS

968. 监控二叉树:DP动态规划(树形DP)

969. 煎饼排序:数学、排序

970. 强整数:枚举、哈希

971. 翻转二叉树以匹配先序遍历:DFS

972. 相等的有理数:数学(分数法)

973. 最接近原点的 K 个点:排序(TOPK)

974. 和可被 K 整除的子数组:前缀和 + 哈希

975. 奇偶跳:单调栈 + sort 、树映射、DP动态规划(线性DP)

976. 三角形的最大周长:贪心 + 排序

977. 有序数组的平方:双指针、排序

978. 最长湍流子数组:滑动窗口、DP动态规划(序列DP)、模拟

979. 在二叉树中分配硬币:DFS

980. 不同路径 III:DFS(回溯)、DP动态规划(状压DP)

981. 基于时间的键值存储:哈希 + 二分

982. 按位与为零的三元组:位运算、数学(快速沃尔什变换)、前缀和

983. 最低票价:DP动态规划(线性DP)、记忆化搜索

984. 不含 AAA 或 BBB 的字符串:贪心

985. 查询后的偶数和:模拟

986. 区间列表的交集:双指针

987. 二叉树的垂序遍历:自定义排序、DFS + 哈希 + 排序、DFS + 优先队列、DFS + 哈希+ 优先队列

988. 从叶结点开始的最小字符串:DFS(回溯)

989. 数组形式的整数加法:数学(逐位相加)

990. 等式方程的可满足性:并查集

991. 坏了的计算器:贪心 + 位运算

992. K 个不同整数的子数组:双指针

993. 二叉树的堂兄弟节点:树的遍历

994. 腐烂的橘子:多源BFS

995. K 连续位的最小翻转次数:差分、滑动窗口

996. 正方形数组的数目:DP动态规划(状压DP)、DFS(回溯)

997. 找到小镇的法官:模拟

998. 最大二叉树 II:树的遍历、树的操作(插入)

999. 可以被一步捕获的棋子数:模拟

1000. 合并石头的最低成本:DP动态规划(区间DP)、记忆化搜索

1001. 网格照明:模拟、哈希

1002. 查找常用字符:数学(计数)、哈希

1003. 检查替换后的词是否有效:栈

1004. 最大连续1的个数 III:二分查找、滑动窗口

1005. K 次取反后最大化的数组和:排序 + 贪心

1006. 笨阶乘:栈、模拟、数学(找规律)

1007. 行相等的最少多米诺旋转:贪心

1008. 前序遍历构造二叉搜索树:二分、栈、直接插入、树的遍历

1009. 十进制整数的反码:位运算

1010. 总持续时间可被 60 整除的歌曲:哈希、数学(取模)

1011. 在 D 天内送达包裹的能力:二分查找

1012. 至少有 1 位重复的数字:DP动态规划(数位DP)、数学

1013. 将数组分成和相等的三个部分:前缀和、数学(寻找切分点)

1014. 最佳观光组合:DP动态规划(线性DP)、贪心

1015. 可被 K 整除的最小整数:数学(推理)、模拟、DP动态规划(数位DP)

1016. 子串能表示从 1 到 N 数字的二进制串:枚举、模拟

1017. 负二进制转换:数学(取模)

1018. 可被 5 整除的二进制前缀:有限状态机、数学

1019. 链表中的下一个更大节点:单调栈

1020. 飞地的数量:DFS(回溯)、BFS + 优先队列

1021. 删除最外层的括号:双指针、栈

1022. 从根到叶的二进制数之和:树的遍历(DFS、BFS)

1023. 驼峰式匹配:双指针、字典树 + DFS

1024. 视频拼接:排序 + 贪心、DP动态规划(01背包)

1025. 除数博弈:数学(推理)、DP动态规划(序列DP)

1026. 节点与其祖先之间的最大差值:树的遍历

1027. 最长等差数列:DP动态规划(序列DP)

1028. 从先序遍历还原二叉树:DFS(回溯)

1029. 两地调度:贪心

1030. 距离顺序排列矩阵单元格:数学(几何法)、排序

1031. 两个非重叠子数组的最大和:前缀和 + DP动态规划(递推DP),滑动窗口 + 前缀和

1032. 字符流:字典树、AC自动机

1033. 移动石子直到连续:数学(找规律)

1034. 边框着色:并查集、DFS、BFS

1035. 不相交的线:DP动态规划(序列DP)

1036. 逃离大迷宫:BFS

1037. 有效的回旋镖:数学(余弦相似度)

1038. 把二叉搜索树转换为累加树:树的遍历(Morris、反序中序)

1039. 多边形三角剖分的最低得分:DP动态规划(区间DP)、记忆化搜索

1040. 移动石子直到连续 II:贪心、滑动窗口 + 二分

1041. 困于环中的机器人:模拟

1042. 不邻接植花:DFS

1043. 分隔数组以得到最大和:DP动态规划(区间DP)

1044. 最长重复子串:哈希(Rabin-Karp编码) + 二分

1046. 最后一块石头的重量:排序(堆排序)、模拟

1047. 删除字符串中的所有相邻重复项;栈、双端队列

1048. 最长字符串链:DP动态规划(线性DP)

1049. 最后一块石头的重量 II:DP动态规划(01背包)

1051. 高度检查器:排序(桶排序)、数学

1052. 爱生气的书店老板:滑动窗口

1053. 交换一次的先前排列:单调栈、贪心 + 双指针、数学(找规律)

1054. 距离相等的条形码:贪心、优先队列

1071. 字符串的最大公因子:枚举、数学(辗转相除法、最大公约数)

1072. 按列翻转得到最大值等行数:哈希

1073. 负二进制数相加:数学(找规律)

1074. 元素和为目标值的子矩阵数量:前缀和 + 哈希、前缀和

1078. Bigram 分词:模拟

1079. 活字印刷:DFS(回溯)

1080. 根到叶路径上的不足节点:树的遍历(DFS)

1081. 不同字符的最小子序列:贪心 + 单调栈、贪心

1089. 复写零:模拟

1090. 受标签影响的最大值:贪心、堆 + 哈希

1091. 二进制矩阵中的最短路径:BFS

1092. 最短公共超序列:DP动态规划(序列DP)

1093. 大样本统计:双指针

1094. 拼车:前缀和、差分

1095. 山脉数组中查找目标值:二分查找

1096. 花括号展开 II:BFS、栈

1103. 分糖果 II:数学(等差数列之和)、模拟

1104. 二叉树寻路:数学、模拟

1105. 填充书架:DP动态规划(序列DP)

1106. 解析布尔表达式:模拟、栈

1108. IP 地址无效化:模拟

1109. 航班预订统计:差分、线段树

1110. 删点成林:树的遍历

1111. 有效括号的嵌套深度:栈、数学(找规律)

1114. 按序打印:并发问题

1115. 交替打印FooBar:多线程

1116. 打印零与奇偶数:多线程

1117. H2O 生成:多线程

1122. 数组的相对排序:哈希、自定义排序(快速、 归并)、优先队列

1123. 最深叶节点的最近公共祖先:树的遍历(DFS)

1124. 表现良好的最长时间段:单调栈、前缀和+哈希

1125. 最小的必要团队:记忆化搜索、DP动态规划(状压DP,01背包)、BFS

1128. 等价多米诺骨牌对的数量:排序 + 哈希、二元组表示 + 数学(计数)

1129. 颜色交替的最短路径:BFS、DFS

1130. 叶值的最小代价生成树:贪心、DP动态规划(树形DP)、记忆化搜索

1131. 绝对值表达式的最大值:数学(曼哈顿距离)

1137. 第 N 个泰波那契数:DP动态规划(递推DP)、数学(快速幂)、记忆化搜索

1138. 字母板上的路径:模拟

1139. 最大的以 1 为边界的正方形:DP动态规划(区间DP)

1140. 石子游戏 II:记忆化搜索、DP动态规划(区间DP)

1143. 最长公共子序列:DP动态规划(序列DP)

1144. 递减元素使数组呈锯齿状:贪心(暴力奇偶统计)

1145. 二叉树着色游戏:树的遍历

1146. 快照数组:哈希 + 二分

1147. 段式回文:贪心、双指针、DP动态规划(区间DP)

1154. 一年中的第几天:模拟

1155. 掷骰子的N种方法:DP动态规划(背包DP、计数型DP)

1156. 单字符重复子串的最大长度:滑动窗口 + 哈希

1157. 子数组中占绝大多数的元素:线段树 + 摩尔投票、二分查找

1160. 拼写单词:哈希

1161. 最大层内元素和:树的遍历

1162. 地图分析:多源BFS

1163. 按字典序排在最后的子串:双指针

1169. 查询无效交易:哈希

1170. 比较字符串最小字母出现频次:哈希 + 二分、模拟

1171. 从链表中删去总和值为零的连续节点:前缀和

1172. 餐盘栈:树状数组、模拟

1175. 质数排列:数学(厄拉多塞筛法)

1177. 构建回文串检测:前缀和 + 哈希、位运算 + 分治、DP动态规划(计数型DP) + 哈希

1178. 猜字谜:字典树、位运算(二进制状态压缩)

1184. 公交站间的距离:预处理 + 前缀和

1185. 一周中的第几天:模拟、数学(推理)

1186. 删除一次得到子数组最大和:DP动态规划(线性DP、递推DP)、贪心、预处理 + 前后缀

1187. 使数组严格递增:DP动态规划(线性DP)、记忆化搜索

1189. “气球” 的最大数量:哈希

1190. 反转每对括号间的子串:栈

1191. K 次串联后最大子数组之和:贪心、DP动态规划(线性DP)

1192. 查找集群内的「关键连接」:DFS + tarjan算法(图)

1195. 交替打印字符串:多线程

1200. 最小绝对差:排序 + 哈希

1201. 丑数 III:二分 + 数学(丑数个数计算)

1202. 交换字符串中的元素:字典序定义(bfs、dfs、并查集)

1203. 项目管理:拓扑

1206. 设计跳表:模拟

1207. 独一无二的出现次数:排序、哈希

1208. 尽可能使字符串相等:前缀和 + 二分、滑动窗口

1209. 删除字符串中的所有相邻重复项 II:栈、数学(计数)、双指针

1210. 穿过迷宫的最少移动次数:BFS、DP动态规划(状压DP)

1217. 玩筹码:贪心

1218. 最长定差子序列:DP动态规划(线性DP) + 哈希

1219. 黄金矿工:DFS(回溯)

1220. 统计元音字母序列的数目:DP动态规划 (计数型DP)+ 数学(快速幂)

1221. 分割平衡字符串:贪心、模拟

1222. 可以攻击国王的皇后:模拟、DFS

1223. 掷骰子模拟:DP动态规划(递推DP)

1224. 最大相等频率:哈希 + 数学(计数)

1226. 哲学家进餐:操作系统(破坏循环等待)

1227. 飞机座位分配概率:数学(推理)

1232. 缀点成线:数学、模拟

1233. 删除子文件夹:字典树

1234. 替换子串得到平衡字符串:滑动窗口、前缀和 + 哈希、贪心

1235. 规划兼职工作:DP动态规划(序列DP、线性DP) + 二分

1237. 找出给定方程的正整数解:二分、双指针

1238. 循环码排列:DFS(回溯)、位运算(异或取反)

1239. 串联字符串的最大长度:DFS(回溯)+ 位运算、DP动态规划(01背包、线性DP) + 位运算、启发式搜索

1240. 铺瓷砖:DFS(回溯)、DP动态规划(状压DP)

1247. 交换字符使得字符串相同:贪心、数学(推理)

1248. 统计「优美子数组」:前缀和 + 差分、数学(找规律)、滑动窗口

1249. 移除无效的括号:栈 + StringBuilder、StringBuilder

1250. 检查「好数组」:数学(最大公约数、裴蜀定理)

1252. 奇数值单元格的数目:模拟

1253. 重构 2 行二进制矩阵:模拟、贪心

1254. 统计封闭岛屿的数目:DFS、BFS、并查集

1255. 得分最高的单词集合:DFS(回溯)、位运算(位压缩)

1260. 二维网格迁移:模拟、模拟 + 数学(原地法)

1261. 在受污染的二叉树中查找元素:DFS

1262. 可被三整除的最大和:DP动态规划(递推DP)、数学(质数)

1263. 推箱子:BFS + 优先队列、BFS + DFS

1266. 访问所有点的最小时间:模拟、数学(切比雪夫距离)

1267. 统计参与通信的服务器:并查集、数学(计数)

1268. 搜索推荐系统:字典树 + DFS、二分

1269. 停在原地的方案数:DP动态规划(序列DP)、数学(规律)、记忆化搜索

1275. 找出井字棋的获胜者:模拟

1276. 不浪费原料的汉堡制作方案:数学(推导)

1277. 统计全为 1 的正方形子矩阵:DP动态规划(区间DP)

1278. 分割回文串 III:DP动态规划(序列DP)、DFS(回溯)

1281. 整数的各位积和之差:模拟

1282. 用户分组:哈希、贪心

1283. 使结果不超过阈值的最小除数:二分

1284. 转化为全零矩阵的最少反转次数:DFS + 状态压缩、BFS + Dijkstra

1286. 字母组合迭代器:数学(找规律)、DFS(回溯)

1287. 有序数组中出现次数超过25%的元素:模拟、二分、双指针

1288. 删除被覆盖区间:排序 + 贪心

1289. 下降路径最小和 II:DP动态规划(线性DP)

1290. 二进制链表转整数:模拟、栈、位运算

1291. 顺次数:DFS(回溯)、枚举

1292. 元素和小于等于阈值的正方形的最大边长:前缀和、二分 + 前缀和

1293. 网格中的最短路径:BFS

1295. 统计位数为偶数的数字:枚举 + 数学、枚举+ 字符串

1296. 划分数组为连续数字的集合:sort+模拟

1297. 子串的最大出现次数:枚举、哈希、滑动窗口

1298. 你能从盒子里获得的最大糖果数:BFS + 队列

1299. 将每个元素替换为右侧最大元素:栈(逆序)

1300. 转变数组后最接近目标值的数组和:二分、三分、二分  + 前缀和

1301. 最大得分的路径数目:DP动态规划(线性DP)

1302. 层数最深叶子节点的和:树的遍历

1304. 和为零的N个唯一整数:数学(中心对称)

1305. 两棵二叉搜索树中的所有元素:排序 + 树的遍历

1306. 跳跃游戏 III:DFS、BFS

1307. 口算难题:DFS(回溯) 

1309. 解码字母到整数映射:模拟

1310. 子数组异或查询:树状数组、数学(前缀异或)

1311. 获取你好友已观看的视频:BFS + 哈希 + 优先队列、BFS + 哈希 + 排序

1312. 让字符串成为回文串的最少插入次数:DP动态规划(区间DP)

1313. 解压缩编码列表:模拟

1314. 矩阵区域和:前缀和

1315. 祖父节点值为偶数的节点和:DFS、BFS

1316. 不同的循环子字符串:滚动哈希 + 前缀和、枚举

1317. 将整数转换为两个无零整数的和:枚举、数学(推理)

1318. 或运算的最小翻转次数:位运算、数学(推理)

1319. 连通网络的操作次数:DFS、BFS、并查集

1320. 二指输入的的最小距离:DP动态规划(区间DP)

1323. 6 和 9 组成的最大数字:模拟、数学

1324. 竖直打印单词:模拟

1325. 删除给定值的叶子节点:树的操作(删除)、树的遍历

1326. 灌溉花园的最少水龙头数目:DP动态规划(区间DP)、贪心

1328. 破坏回文串:贪心

1329. 将矩阵按对角线排序:模拟、哈希

1330. 翻转子数组得到最大的数组值:贪心

1331. 数组序号转换:哈希 + 排序、桶排序 + 前缀和

1332. 删除回文子序列:数学(找规律)

1333. 餐厅过滤器:哈希 + 排序

1334. 阈值距离内邻居最少的城市:最短路径(图)、BFS

1335. 工作计划的最低难度:DP动态规划(线性DP)

1337. 矩阵中战斗力最弱的 K 行:二分 + 优先队列(堆)、二分 + 排序

1338. 数组大小减半:贪心、数学(计数) + 排序

1339. 分裂二叉树的最大乘积:数学、DFS、树的遍历

1340. 跳跃游戏 V:记忆化搜索、DP动态规划(线性DP)

1342. 将数字变成 0 的操作次数:位运算

1343. 大小为 K 且平均值大于等于阈值的子数组数目:滑动窗口

1344. 时钟指针的夹角:数学

1345. 跳跃游戏 IV:BFS + 哈希、DP动态规划(线性DP) + 哈希

1346. 检查整数及其两倍数是否存在:哈希

1347. 制造字母异位词的最小步骤数:哈希、双指针

1348. 推文计数:模拟、平衡二叉树

1349. 参加考试的最大学生数:DP动态规划(状压DP)、记忆化搜索

1351. 统计有序矩阵中的负数:二分、双指针

1352. 最后 K 个数的乘积:前缀积

1353. 最多可以参加的会议数目:优先队列、贪心

1354. 多次求和构造目标数组:数学(找规律)、逆推 + 优先队列/最大堆

1356. 根据数字二进制下 1 的数目排序:位运算

1357. 每隔 n 个顾客打折:模拟

1358. 包含所有三种字符的子字符串数目:滑动窗口、枚举 + 二分、DP动态规划(线性DP)

1359. 有效的快递序列数目:数学(递推、整体法)

1360. 日期之间隔几天:模拟

1361. 验证二叉树:拓扑、并查集、树的遍历

1362. 最接近的因数:数学(最大均方根)

1363. 形成三的最大倍数:DP动态规划(01背包)、数学

1365. 有多少小于当前数字的数字:排序、数学(计数) + 前缀和

1366. 通过投票对团队排名:排序

1367. 二叉树中的列表:枚举、DP动态规划(树形DP)、KMP + DFS

1368. 使网格图至少有一条有效路径的最小代价:BFS、最短路径(图)

1370. 上升下降字符串:数学(桶计数)、哈希

1371. 每个元音包含偶数次的最长子字符串:前缀和 + 状态压缩

1372. 二叉树中的最长交错路径:DP动态规划(树形DP)、DFS

1373. 二叉搜索子树的最大键值和:树的遍历(后续)

1374. 生成每种字符都是奇数个的字符串:模拟

1375. 灯泡开关 III:双指针、树状数组 + 前缀和

1376. 通知所有员工所需的时间:树的遍历

1377. T 秒后青蛙的位置:BFS、DFS

1379. 找出克隆二叉树中的相同节点:栈、DFS

1380. 矩阵中的幸运数:模拟

1381. 设计一个支持增量操作的栈:模拟

1382. 将二叉搜索树变平衡:贪心、树的操作(转换)、树的遍历

1383. 最大的团队表现值:排序 + 堆

1385. 两个数组间的距离值:二分、模拟

1386. 安排电影院座位:位运算、哈希 + 状态压缩

1387. 将整数按权重排序:记忆化搜索、哈希、DFS

1388. 3n 块披萨:DP动态规划(序列DP)

1389. 按既定顺序创建目标数组:模拟、数学(原地法)

1390. 四因数:枚举、数学

1391. 检查网格中是否存在有效路径:模拟、并查集、DFS

1392. 最长快乐前缀:字符串匹配(kmp)、哈希 + 前缀和

1394. 找出数组中的幸运数:哈希

1395. 统计作战单位数:枚举、离散化树状数组、DP动态规划(递推DP)

1396. 设计地铁系统:哈希

1397. 找到所有好字符串:DP动态规划(数位DP) + 字符串匹配(KMP)

1399. 统计最大组的数目:数学、哈希

1400. 构造 K 个回文字符串:贪心、哈希、位运算

1401. 圆和矩形是否有重叠:模拟、数学

1402. 做菜顺序:贪心、DFS(回溯)、sort + DP动态规划(线性DP)

1403. 非递增顺序的最小子序列:模拟

1404. 将二进制表示减到 1 的步骤数:模拟、数学(计数)

1405. 最长快乐字符串:贪心、数学(计数)

1406. 石子游戏 III:DP动态规划(区间DP)、记忆化搜索

1408. 数组中的字符串匹配:排序、字典树、字符串匹配(KMP)、模拟

1409. 查询带键的排列:模拟、树状数组

1410. HTML 实体解析器:模拟

1411. 给 N x 3 网格图涂色的方案数:数学、DP动态规划(计数型DP) + 位运算

1413. 逐步求和得到正数的最小值:前缀和 + 排序、DP动态规划(线性DP)

1414. 和为 K 的最少斐波那契数字数目:贪心

1415. 长度为 n 的开心字符串中字典序第 k 小的字符串:DFS(回溯)、数学(计数)

1416. 恢复数组:DP动态规划(递推DP)

1417. 重新格式化字符串:双指针、数学(分离法)

1418. 点菜展示表:哈希

1419. 数青蛙:模拟

1420. 生成数组:前缀和 + DP动态规划(计数型DP)、记忆化搜索

1422. 分割字符串的最大得分:模拟、数学(计数)

1423. 可获得的最大点数:滑动窗口、前缀和

1424. 对角线遍历 II:优先队列、数学(找规律)

1425. 带限制的子序列和:DP动态规划(序列DP) + 优先队列/堆/单调栈

1431. 拥有最多糖果的孩子:模拟

1432. 改变一个整数能得到的最大差值:枚举、贪心、模拟

1433. 检查一个字符串是否可以打破另一个字符串:排序、数学(计数)

1434. 每个人戴不同帽子的方案数:DP动态规划(状压DP)

1436. 旅行终点站:哈希、模拟

1437. 是否所有 1 都至少相隔 k 个元素:滑动窗口

1438. 绝对差不超过限制的最长连续子数组:滑动窗口 + 单调队列、滑动窗口 + 哈希

1439. 有序矩阵中的第 k 个最小数组和:二分、模拟、最小堆、优先队列 + 最短路径

1441. 用栈操作构建数组:模拟栈

1442. 形成两个异或相等数组的三元组数目:位运算(异或)、哈希

1443. 收集树上所有苹果的最少时间:树的遍历(后续)

1444. 切披萨的方案数:DP动态规划(线性DP)、记忆化搜索

1446. 连续字符:双指针、状态机

1447. 最简分数:模拟、数学(欧几里得距离)

1448. 统计二叉树中好节点的数目:DFS

1449. 数位成本和为目标值的最大数字:DP动态规划(完全背包)

1450. 在既定时间做作业的学生人数:数学(推理)

1451. 重新排列句子中的单词:排序

1452. 收藏清单:哈希

1453. 圆形靶内的最大飞镖数量:贪心、数学(推导)

1455. 检查单词是否为句中其他单词的前缀:模拟

1456. 定长子串中元音的最大数目:滑动窗口

1457. 二叉树中的伪回文路径:位运算、DFS(回溯)

1458. 两个子序列的最大点积:DP动态规划(递推DP)

1460. 通过翻转子数组使两个数组相等:数学、排序

1461. 检查一个字符串是否包含所有长度为 K 的二进制子串:哈希、哈希 + 滑动窗口

1462. 课程表 IV:记忆化搜索、最短路径

1463. 摘樱桃 II:DP动态规划(线性DP)、记忆化搜索

1464. 数组中两元素的最大乘积:排序、贪心

1465. 切割后面积最大的蛋糕:排序、差分数组

1466. 重新规划路线:BFS

1467. 两个盒子中球的颜色数相同的概率:DP动态规划(递推DP)、DFS(回溯) + 剪枝

1470. 重新排列数组:双指针、数学(原地法)

1471. 数组中的 k 个最强值:双指针 + 排序、堆

1472. 设计浏览器历史记录:模拟、栈

1473. 粉刷房子 III:DP动态规划(序列DP)、记忆化搜索

1475. 商品折扣后的最终价格:单调栈、差分数组

1476. 子矩形查询:模拟

1477. 找两个和为目标值且不重叠的子数组:DP动态规划(区间DP) + 滑动窗口、贪心、双指针

1478. 安排邮筒:DP动态规划(线性DP)、记忆化搜索

1480. 一维数组的动态和:数学(原地法)、前缀和

1481. 不同整数的最少数目:排序 + 贪心

1482. 制作 m 束花所需的最少天数:二分查找

1483. 树节点的第 K 个祖先:DFS/BFS + 哈希

1486. 数组异或操作:模拟、数学(推导)

1487. 保证文件名唯一:哈希

1488. 避免洪水泛滥:贪心 + 二分、并查集

1489. 找到最小生成树里的关键边和伪关键边:最小生成树 + 枚举/连通性

1491. 去掉最低工资和最高工资后的工资平均值:模拟

1492. n 的第 k 个因子:枚举、双指针、DP动态规划(线性DP)

1493. 删掉一个元素以后全为 1 的最长子数组:滑动窗口

1494. 并行课程 II:DP动态规划(状压DP) + 位运算/枚举/二进制枚举

1496. 判断路径是否相交:哈希、模拟

1497. 检查数组对是否可以被 k 整除:数学(余数频率统计)

1498. 满足条件的子序列数目:排序 + 二分 + 快速幂、排序 + 滑动窗口 + 快速幂

1499. 满足不等式的最大值:滑动窗口、单调队列

1502. 判断能否形成等差数列:模拟

1503. 所有蚂蚁掉下来前的最后一刻:数学(推理)

1504. 统计全 1 子矩形:单调栈、枚举、DP动态规划(线性DP)、位运算

1505. 最多 K 次交换相邻数位后得到的最小整数:贪心、树状数组、线段树

1507. 转变日期格式:模拟

1508. 子数组和排序后的区间和:二分 + 双指针、前缀和

1509. 三次操作后最大值与最小值的最小差:排序、贪心

1510. 石子游戏 IV:DP动态规划(区间DP)、记忆化搜索

1512. 好数对的数目:数学

1513. 仅含 1 的子串数:双指针

1514. 概率最大的路径:最短路径

1515. 服务中心的最佳位置:数学(凸函数、模拟退火)

1518. 换酒问题:模拟、数学

1519. 子树中标签相同的节点数:DFS + 哈希

1520. 最多的不重叠子字符串:贪心、DP动态规划(序列DP)

1521. 找到最接近目标值的函数值:位运算、线段树 + 滑动窗口

1523. 在区间范围内统计奇数数目:数学(推导)

1524. 和为奇数的子数组数目:DP动态规划(线性DP)、前缀和 + 数学

1525. 字符串的好分割数目:DP动态规划(区间DP、递推DP)、哈希 + 数学(计数)、前缀和

1526. 形成目标数组的子数组最少增加次数:单调栈、贪心、DP动态规划(计数型DP)、拆分

1528. 重新排列字符串:模拟、数学(原地法)

1529. 灯泡开关 IV:模拟、双指针、DP动态规划(状压DP)

1530. 好叶子节点对的数量:树的遍历

1531. 压缩字符串 II:DP动态规划(区间DP)

1534. 统计好三元组:枚举

1535. 找出数组游戏的赢家:模拟、双指针

1536. 排布二进制网格的最少交换次数:贪心、模拟

1537. 最大得分:DP动态规划(递推DP)、双指针

1539. 第 k 个缺失的正整数:枚举、二分、模拟

1540. K 次操作转变字符串:数学(计数)

1541. 平衡括号字符串的最少插入次数:贪心、栈、模拟

1542. 找出最长的超赞子字符串:前缀和 + 状态压缩、哈希 + 位运算、DP动态规划(状压DP)

1544. 整理字符串:模拟、栈

1545. 找出第 N 个二进制字符串中的第 K 位:DP动态规划(状压DP)、数学(找规律)

1546. 和为目标值且不重叠的非空子数组的最大数目:前缀和 + 哈希、DP动态规划(01背包)

1547. 切棍子的最小成本:DP动态规划(区间DP)、记忆化搜索

1550. 存在连续三个奇数的数组:枚举

1551. 使数组中所有元素相等的最小操作数:贪心、数学(找规律)

1552. 两球之间的磁力:二分

1553. 吃掉 N 个橘子的最少天数:记忆化搜索、最短路、启发式搜索

1556. 千位分隔数:模拟、正则

1557. 可以到达所有点的最少点数目:数学(入度为0)

1558. 得到目标数组的最少函数调用次数:位运算(二进制)、数学(推理)

1559. 二维网格图中探测环:DFS、并查集、层次遍历

1560. 圆形赛道上经过次数最多的扇区:模拟、差分、数学

1561. 你可以获得的最大硬币数目:贪心、双指针

1562. 查找大小为 M 的最新分组:模拟、并查集、数学(窗口最大值)

1563. 石子游戏 V:DP动态规划(区间DP)

1566. 重复至少 K 次且长度为 M 的模式:枚举、双指针、模拟

1567. 乘积为正数的最长子数组长度:DP动态规划(线性DP)、前缀和

1568. 使陆地分离的最少天数:并查集 + tarjan、DFS

1569. 将子数组重新排序得到同一个二叉查找树的方案数:DP动态规划(树形DP) + 数学(计数)

1572. 矩阵对角线元素的和:数学(逐行取数)

1573. 分割字符串的方案数:数学、模拟、前缀和 + 二分

1574. 删除最短的子数组使剩余数组有序:二分

1575. 统计所有可行路径:记忆化搜索、DP动态规划(背包变形)

1576. 替换所有的问号:模拟

1577. 数的平方等于两数乘积的方法数:哈希、双指针

1578. 避免重复字母的最小删除成本:贪心、DP动态规划(线性DP)、双指针、栈

1579. 保证图可完全遍历:并查集

1582. 二进制矩阵中的特殊位置:双指针、模拟

1583. 统计不开心的朋友:模拟

1584. 连接所有点的最小费用:并查集、最小生成树(图)

1585. 检查字符串是否可以通过排序子字符串得到另一个字符串:排序(冒泡)、数学(逆序数)

1588. 所有奇数长度子数组的和:前缀和、数学

1589. 所有排列中的最大和:贪心、前缀和 + 差分

1590. 使数组和能被 P 整除:前缀和 + 哈希、数学

1591. 奇怪的打印机 II:拓扑

1592. 重新排列单词间的空格:数学(计数)

1593. 拆分字符串使唯一子字符串的数目最大:DFS(回溯)

1594. 矩阵的最大非负积:DP动态规划(线性DP)

1595. 连通两组点的最小成本:DP动态规划(状压DP)

1598. 文件夹操作日志搜集器:数学(计数)、栈

1599. 经营摩天轮的最大利润:模拟

1600. 皇位继承顺序:多叉树遍历、链表 + 数学(标记)

1601. 最多可达成的换楼请求数目:最小费用最大流(图)、DP动态规划(背包) + 状态压缩

1603. 设计停车系统:模拟、哈希、位运算(二进制)

1604. 警告一小时内使用相同员工卡大于等于三次的人:哈希

1605. 给定行和列的和求可行矩阵:贪心

1606. 找到处理最多请求的服务器:优先队列 + 二分查找、优先队列 + 哈希

1608. 特殊数组的特征值:二分、枚举、数学(计数)

1609. 奇偶树:数的遍历(层次)

1610. 可见点的最大数目:极坐标 + 滑动窗口

1611. 使整数变为 0 的最少操作次数:记忆化搜索、数学(找规律)

1614. 括号的最大嵌套深度:前缀和、栈、正则

1615. 最大网络秩:枚举

1616. 分割两个字符串得到回文串:双指针 + 贪心

学习资料:

宫水三叶

https://github.com/SharingSource/LogicStack-LeetCode/wiki

代码随想录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值