leetcode
2021-08-17 05:09:52 42 举报
AI智能生成
LeetCode是一个在线的编程题库,提供了大量的算法题目供程序员们练习和提高自己的编程能力。这些题目涵盖了数据结构、算法设计、编程语言等多个领域,难度从简单到困难不等,适合各个级别的程序员进行学习和挑战。在LeetCode上,用户可以通过编写代码来解决这些问题,并提交自己的解答以获得评分和反馈。同时,LeetCode还提供了讨论区和社区功能,让程序员们可以相互交流、分享解题思路和经验。通过在LeetCode上练习,程序员们可以提高自己的编程技巧、加深对算法和数据结构的理解,并且更好地准备面试和技术竞赛。
作者其他创作
大纲/内容
1.双指针法
2.哈希表法
3.虚拟头结点
4.KMP思想
2.哈希表法
3.虚拟头结点
4.KMP思想
回溯法
组合
17. 电话号码的字母组合
77. 组合
39 组合总和
40 组合总和 II
216 组合总和 III
分割
131. 分割回文串
93. 复原 IP 地址
子集
78. 子集
90.子集II
排列
46.全排列
47.全排列II
其他
332.重新安排行程
491. 递增子序列
473. 火柴拼正方形
698. 划分为k个相等的子集
棋盘问题
52.N皇后
37.解数独
贪心
简单题目
455.分发饼干
局部符合,整体符合
376. 摆动序列
45. 跳跃游戏 II
968. 监控二叉树
倒序遍历
53. 最大子序和
其他
122. 买卖股票的最佳时机 II
55. 跳跃游戏
134. 加油站
多次贪心
1005. K 次取反后最大化的数组和
135. 分发糖果
860.柠檬水找零
406.根据身高重建队列
738. 单调递增的数字
区间问题
435. 无重叠区间
452. 用最少数量的箭引爆气球
763. 划分字母区间
56. 合并区间
动态规划
斐波那契模型
509. 斐波那契数
70. 爬楼梯
746. 使用最小花费爬楼梯
62. 不同路径
63. 不同路径 II
找规律
343. 整数拆分
剑指 Offer 14- I. 剪绳子
拆分
96. 不同的二叉搜索树
背包问题
01背包
416. 分割等和子集
1049. 最后一块石头的重量 II
494. 目标和(有点难)
暴力递归到动态规划
377. 组合总和 Ⅳ
474. 一和零
518. 零钱兑换 II
70. 爬楼梯
322. 零钱兑换
279. 完全平方数(跟零钱兑换一样的题目)
139. 单词拆分
198. 打家劫舍
213. 打家劫舍 II(与打家劫舍一样,只有一点点不同)
买卖股票系列
121. 买卖股票的最佳时机(压缩index) 剑指 Offer 63. 股票的最大利润
122. 买卖股票的最佳时机 II(解法与121一样,唯一区别在与b的更新时,多加了a)
123. 买卖股票的最佳时机 III
188. 买卖股票的最佳时机 IV
309. 最佳买卖股票时机含冷冻期(记忆化搜索)
714. 买卖股票的最佳时机含手续费(和121一样)
总结:
121:如果最多买卖1次,则只有一张表,此时可以用2个常数来压缩index,a表示state = 0,b存储state=1
123:如果最多买卖2次,则有两张表,此时可以用4个常数来压缩index
188:如果最多买卖k次,则有k张表,此时需要用2k个常数来压缩index
122:如果最多买卖次数不限,则也可以用2个常数,这两个常数同时压缩index以及num
309:在122的基础上,添加一个常数用于保存index + 1位置的值
714:在122的基础上,state = 1时减去fee
121:如果最多买卖1次,则只有一张表,此时可以用2个常数来压缩index,a表示state = 0,b存储state=1
123:如果最多买卖2次,则有两张表,此时可以用4个常数来压缩index
188:如果最多买卖k次,则有k张表,此时需要用2k个常数来压缩index
122:如果最多买卖次数不限,则也可以用2个常数,这两个常数同时压缩index以及num
309:在122的基础上,添加一个常数用于保存index + 1位置的值
714:在122的基础上,state = 1时减去fee
子序列问题
记忆化搜索
337. 打家劫舍 III
91. 解码方法
子序列问题
300. 最长递增子序列
674. 最长连续递增序列
718. 最长重复子数组
1143. 最长公共子序列(与718不同在于,可以不连续)
1035. 不相交的线(与1143一样)
53. 最大子序和
115. 不同的子序列
583. 两个字符串的删除操作(和1143一样)
看答案才理解的
72. 编辑距离(hard)
152. 乘积最大子数组
523. 连续的子数组和
264. 丑数 II(***)
368. 最大整除子集(***)
前缀和
525. 连续数组
523. 连续的子数组和
974. 和可被 K 整除的子数组
560. 和为K的子数组
回文
647. 回文子串
516. 最长回文子序列(想了很久的)
状态转移很好想的
64. 最小路径和
滑动窗口
76. 最小覆盖子串
3. 无重复字符的最长子串
340. 至多包含 K 个不同字符的最长子串
159. 至多包含两个不同字符的最长子串
209.长度最小的子数组
剑指 Offer 48. 最长不含重复字符的子字符串
424. 替换后的最长重复字符(难)
992. K 个不同整数的子数组(难)
239. 滑动窗口最大值(难)
巧妙解法
相消思想
异或法
剑指 Offer 56 - I. 数组中数字出现的次数
260. 只出现一次的数字 III
剑指 Offer 39. 数组中出现次数超过一半的数字
数组
双指针法
15. 三数之和
18. 四数之和
206.反转链表
142.环形链表II
27. 移除元素
344. 反转字符串
541. 反转字符串 II
剑指 Offer 05. 替换空格
快慢指针
142.环形链表II
链表
虚拟头结点
双指针法
快慢指针
143. 重排链表
哈希表
哈希法
242. 有效的字母异位词
349. 两个数组的交集
202.快乐数
1.两数之和
454.四数相加II
383. 赎金信
剑指 Offer 48. 最长不含重复字符的子字符串
128. 最长连续序列
使用细节
用来快速判断一个元素是否出现集合里
要点
将哪些东西记录在哈希表中
使用什么数据结构
字符串
KMP算法
459. 重复的子字符串
28. 实现 strStr()
栈
对称匹配问题
20. 有效的括号
1047. 删除字符串中的所有相邻重复项
150. 逆波兰表达式求值
单调栈
子主题
其他
71. 简化路径
树
深度优先
前序
144. 二叉树的前序遍历
589. N 叉树的前序遍历
701. 二叉搜索树中的插入操作
后序
145. 二叉树的后序遍历
590. N 叉树的后序遍历
404. 左叶子之和
中序
94. 二叉树的中序遍历
98. 验证二叉搜索树
501. 二叉搜索树中的众数
538. 把二叉搜索树转换为累加树
递归
需要返回值
112. 路径总和
404. 左叶子之和
100. 相同的树
111. 二叉树的最小深度
110. 平衡二叉树
572. 另一个树的子树
105. 从前序与中序遍历序列构造二叉树
106.从中序与后序遍历序列构造二叉树
654. 最大二叉树
617. 合并二叉树
700. 二叉搜索树中的搜索
98. 验证二叉搜索树
501. 二叉搜索树中的众数
235. 二叉搜索树的最近公共祖先
236. 二叉树的最近公共祖先
530. 二叉搜索树的最小绝对差
450. 删除二叉搜索树中的节点
669. 修剪二叉搜索树(不太理解)
108. 将有序数组转换为二叉搜索树
1325. 删除给定值的叶子节点
不需要返回值
113. 路径总和 II
513. 找树左下角的值
257. 二叉树的所有路径
701. 二叉搜索树中的插入操作
538. 把二叉搜索树转换为累加树
广度优先
层次遍历
102.二叉树的层序遍历
107. 二叉树的层序遍历 II
199. 二叉树的右视图
429. N 叉树的层序遍历
637.二叉树的层平均值
226. 翻转二叉树
剑指 Offer 55 - I. 二叉树的深度
剑指 Offer 27. 二叉树的镜像
101. 对称二叉树
515. 在每个树行中找最大值
559. N 叉树的最大深度
111. 二叉树的最小深度
222. 完全二叉树的节点个数
100. 相同的树
572. 另一个树的子树
513. 找树左下角的值
动态规划
0 条评论
下一页