- 博客(53)
- 收藏
- 关注
原创 训练营第六十天● 84.柱状图中最大的矩形
今天是训练营最后一天,恭喜坚持两个月的录友们,接下来可以写一篇自己 代码随想录一刷的总结。好好回顾一下,这两个月自己的博客内容,以及自己的收获。
2024-01-27 14:35:02
361
原创 训练营第五十九天丨● 503.下一个更大元素II ● 42. 接雨水
建议是掌握 双指针 和单调栈,因为在面试中 写出单调栈可能 有点难度,但双指针思路更直接一些。在时间紧张的情况有,能写出双指针法也是不错的,然后可以和面试官在慢慢讨论如何优化。接雨水这道题目是 面试中特别高频的一道题,也是单调栈 应用的题目,大家好好做做。这道题和 739. 每日温度 几乎如出一辙,可以自己尝试做一做。503.下一个更大元素II。
2024-01-27 14:33:47
417
原创 训练营第五十八天丨● 739. 每日温度 ● 496.下一个更大元素 I
本题和 739. 每日温度 看似差不多,其实 有加了点难度。今天正式开始单调栈,这是单调栈一篇扫盲题目,也是经典题。496.下一个更大元素 I。
2024-01-27 14:32:43
354
原创 训练营第五十七天丨● 647. 回文子串 ● 516.最长回文子序列● 动态规划总结篇
647. 回文子串,求的是回文子串,而本题要求的是回文子序列, 大家要搞清楚两者之间的区别。动态规划解决的经典题目,如果没接触过的话,别硬想 直接看题解。516.最长回文子序列。
2024-01-27 14:31:36
344
原创 训练营第五十六天丨● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇
本题和动态规划:115.不同的子序列 相比,其实就是两个字符串都可以删除了,情况虽说复杂一些,但整体思路是不变的。最终我们迎来了编辑距离这道题目,之前安排题目都是为了 编辑距离做铺垫。583. 两个字符串的删除操作。
2024-01-27 14:30:21
349
原创 训练营第五十五天丨● 392.判断子序列 ● 115.不同的子序列
这道题目算是 编辑距离问题 的入门题目(毕竟这里只是涉及到减法),慢慢的,后面就要来解决真正的 编辑距离问题了。但相对于刚讲过 392.判断子序列,本题 就有难度了 ,感受一下本题和 392.判断子序列 的区别。115.不同的子序列。
2024-01-27 14:28:56
367
原创 训练营第五十三天 丨 ● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划
其实本题和 1143.最长公共子序列 是一模一样的,大家尝试自己做一做。体会一下本题和 718. 最长重复子数组 的区别。这道题我们用贪心做过,这次 再用dp来做一遍。1143.最长公共子序列。1035.不相交的线。
2024-01-27 14:27:23
319
原创 训练营第五十二天 | 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组
674. 最长连续递增序列。718. 最长重复子数组。300.最长递增子序列。
2024-01-27 14:20:30
318
原创 训练营第五十一天 | ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ●总结
714.买卖股票的最佳时机含手续费。309.最佳买卖股票时机含冷冻期。
2024-01-18 14:44:38
356
原创 训练营第五十天 | 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV
股票状态,加了交易次数为k的限制,定义dp二维数组,[天数][股票状态],2*k+1,当股票状态为奇数时持有,偶数时不持有。最多买卖两次,将股票状态设置为第一次持有,不持有,第二次持有,不持有。123.买卖股票的最佳时机III。188.买卖股票的最佳时机IV。
2024-01-17 13:58:26
333
原创 训练营第四十九天 | ● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II
与上题区别在于持有状态考虑买入时要加上前一天的不持有的钱数。即dp[0] = Math.max(dp[0], dp[1] - prices[i]);不持有:第i-1天不持有;122.买卖股票的最佳时机II。不持有:第i-1天不持有;121. 买卖股票的最佳时机。121. 买卖股票的最佳时机。持有:第i-1天持有;持有:第i-1天持有;
2024-01-16 12:43:48
353
原创 训练营四十八天 | 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III
递归三部曲:1.参数和返回值 2.终止条件 3.单层递归逻辑。不要忘记空数组和数组长度为1的情况单独考虑。337.打家劫舍III。213.打家劫舍II。二叉树 后序遍历 递归。只考虑首或者只考虑尾。
2024-01-15 21:16:47
455
原创 训练营第四十六天 | ● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!
最大容量:dp[j] = Math.max(dp[j], dp[j-weight[i]] + weight[i]);最大价值:dp[j] = Math.max(dp[j], dp[j-weight[i]] + value[i]);最小子集个数:dp[j] = Math.min(dp[j], dp[j-weight[i]] + 1);最大子集个数:dp[j] = Math.max(dp[j], dp[j-weight[i]] + 1);方法数:dp[j] += dp[j-weight[i]];
2024-01-15 17:47:55
388
原创 训练营四十五天 | ● 70. 爬楼梯 (进阶)● 322. 零钱兑换 ● 279.完全平方数
i++) {//物品。j++) {//背包。一次跨1-m个台阶为物品,共有n个台阶为背包容量,排列问题,完全背包。如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。区别在于不用判断是否能凑齐 因为有1 必然凑齐。本题求零钱个数,组合和排序都可以。70. 爬楼梯 (进阶)注意初始化 递推公式。
2024-01-12 23:45:39
328
原创 训练营四十四天 | ● 完全背包● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ
j++) {//正序遍历。先物品再背包是组合,不讲究各个物品的不同顺序,因为先顺序遍历物品,所以物品只有一种排序,即组合。先物品再背包和先背包再物品都行,背包正序遍历,可以重复选取。先背包再物品是排序,物品可以有不同顺序。完全背包 方法数 组合。完全背包 方法数 排序。
2024-01-12 20:15:48
369
原创 训练营第四十三天 | ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零
好难 注意初始化以及递推公式 转化为二维数组好理解。1049. 最后一块石头的重量 II。初始化0,注意此题的二维数组含义。分成容量相近的两部分,相减。
2024-01-12 19:01:21
463
原创 训练营第四十二天 | 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集
把数组分成总和相等的两份,如果数组总和为奇数,不能分割,若有符合的数组子集,返回true。416. 分割等和子集。
2024-01-12 17:20:37
363
原创 训练营第三十九天 | ● 62.不同路径 ● 63. 不同路径 II
注意遇到障碍物时 初始值和递推公式的写法。难想,包括递推公式以及初始条件。63. 不同路径 II。
2024-01-09 23:58:54
357
原创 训练营第三十八天 | ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
和斐波那契数递推公式相同,遍历从3开始。746. 使用最小花费爬楼梯。509. 斐波那契数。时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)
2024-01-09 12:48:47
324
原创 训练营第三十七天 | 738.单调递增的数字 ● 968.监控二叉树 ● 总结
从后往前遍历,遇到不递增的情况,该位置数字减一,该位置之后的数字都为9,用start记录为9的位置。968.监控二叉树 (可以跳过)738.单调递增的数字。
2024-01-08 22:34:43
439
原创 训练营第三十六天 | 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间
没做出来 第一步寻求字母的末尾位置都想不到 根据最终位置找最大区间思路想不到。排序,遇重叠区间就移除,并更新区间;和射气球差不多 但就是没思路。763.划分字母区间。435. 无重叠区间。注意最后一个区间要另加。
2024-01-08 20:34:51
396
原创 创造营第三十五天 | ● 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球
局部最优:优先按身高高的people的k来插入。插入操作过后的people满足队列属性。局部最优:当气球出现重叠,一起射,所用弓箭最少。全局最优:把所有气球射爆所用弓箭最少。将左边界进行排序,比较相邻区域是否有重叠,若无,射击次数加一,有,更新右边界。排序:按照身高由高至低排列,身高相同的根据k由小到大排列。全局最优:最后都做完插入操作,整个队列满足题目队列属性。452. 用最少数量的箭引爆气球。406.根据身高重建队列。
2024-01-02 18:15:09
341
原创 创造营第三十三天 | 1005.K次取反后最大化的数组和 ● 134. 加油站● 135. 分发糖果
局部最优:当前累加rest[i]的和curSum一旦小于0,起始位置至少要是i+1,因为从i之前开始一定不行。此时局部最优:只要右边评分比左边大,右边的孩子就多一个糖果,全局最优:相邻的孩子中,评分高的右孩子获得比左边孩子更多的糖果。从0 遍历,遇到负数取相反值,k--;遍历完成,k>0,若k为奇数,最小正值取相反值;局部最优:只找数值最小的正整数进行反转,当前数值和可以达到最大,全局最优:整个 数组和 达到最大。局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。
2024-01-02 16:13:06
314
原创 创造营第三十一天 | 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
连续和为负数归0, 记录更新最大的连续和。分清楚for循环的主体是胃口还是饼干。局部最优推出全局最优。
2024-01-01 19:34:22
287
原创 创造营第三十天 | 332.重新安排行程 ● 51. N皇后 ● 37. 解数独 ● 总结
51. N皇后(可跳过)37. 解数独(可跳过)332.重新安排行程。
2023-12-31 15:09:48
337
原创 创造营第二十九天 | * 491.递增子序列* 46.全排列* 47.全排列 II
给定一个可包含重复数字的序列。给定一个不含重复数字的数组。返回所有不重复的全排列。包括树枝去重和树层去重。
2023-12-30 01:33:09
434
原创 创造营第二十八天 | 93.复原IP地址 ● 78.子集 ● 90.子集II
用三个'.' 将一串字符分为四段,要求每段大于0小于255且当元素不止一个时0不能为开头,接收所有符合要求的结果。要求全部子集 组合是叶子结点。
2023-12-29 23:37:31
331
原创 创造营第二十七天 | 39. 组合总和● 40.组合总和II● 131.分割回文串
如何进行分割:用startIndex进行分割,采用双指针,for循环中i为终止位置,i的取值范围为startIndex--s.length(),左闭右开。for循环如果出现回文串,从i+1为起始位置进行下一级纵向递归,回溯。数组有重复,集合元素可重复,集合不重复,需要去重。数组中无重复元素,集合里元素可重复。
2023-12-27 23:14:23
335
原创 创造营第二十五天 | ● 216.组合总和III● 17.电话号码的字母组合
利用num索引找到digits的数字,进而找到strNumber中对应的字符串,对字符串进行遍历,包含下一级的递归,使用num+1进入下一级递归;num从0开始,当num = digits.length()时,说明递归结束。17.电话号码的字母组合。216.组合总和III。
2023-12-26 11:14:32
310
原创 创造营第二十四天 | ● 理论基础 ● 77. 组合
对着 在 回溯算法理论基础 给出的 代码模板,来做本题组合问题,大家就会发现 写回溯算法套路。在回溯算法解决实际问题的过程中,大家会有各种疑问,先看视频介绍,基本可以解决大家的疑惑。本题关于剪枝操作是大家要理解的重点,因为后面很多回溯算法解决的题目,都是这个剪枝套路。主要问题:组合/切割/子集/排列/棋盘。剪枝 对遍历终点进行操作。
2023-12-26 00:38:38
402
原创 创造营第二十三天 | ● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树 ● 总结篇
108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。669. 修剪二叉搜索树。
2023-12-24 00:40:41
365
1
原创 创造营第二十二天 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
有个错误示范,break导致只循环一次就退出。235. 二叉搜索树的最近公共祖先。701.二叉搜索树中的插入操作。450.删除二叉搜索树中的节点。遇到空节点说明此节点是插入的位置。
2023-12-23 23:04:53
355
1
原创 创造营第二十一天 | 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
236. 二叉树的最近公共祖先。530.二叉搜索树的最小绝对差。501.二叉搜索树中的众数。
2023-12-22 00:25:11
377
原创 创造营第二十天 | 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树
双指针比较前一个结点和当前结点的值大小,中序遍历 前一个值必然小于后一个值。没有单独考虑叶子结点,会进入递归,遇到第一条if判断语句返回。700.二叉搜索树中的搜索。注意while循环里条件是并集。98.验证二叉搜索树。
2023-12-21 00:33:27
365
原创 创造营第十八天 | ● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
需要注意的是targetSum在递归里是减去结点值 比较其与0的大小。106.从中序与后序遍历序列构造二叉树。105.从前序与中序遍历序列构造二叉树。从中序与后序遍历序列构造二叉树。113. 路径总和ii。
2023-12-19 23:24:39
394
1
原创 创造营第十七天 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和
这题思路顺下来了但是又记不住 重要的是对叶子结点的处理以及递归回溯的结合。257. 二叉树的所有路径 (优先掌握递归)110.平衡二叉树 (优先掌握递归)404.左叶子之和 (优先掌握递归)判断左叶子从其父结点开始。
2023-12-18 17:10:59
346
1
原创 创造营第十六天 | ● 104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
相较于二叉树的最大深度而言,多了左右子树是否为空节点的判断,目的是为了防止出现当根节点的左孩子为空右孩子不为空时最小深度判断错误。222.完全二叉树的节点个数(优先掌握递归)111.二叉树的最小深度 (优先掌握递归)104.二叉树的最大深度 (优先掌握递归)
2023-12-18 12:38:55
34
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人