一只马儿️
码龄3年
关注
提问 私信
  • 博客:17,993
    问答:13
    18,006
    总访问量
  • 34
    原创
  • 247,356
    排名
  • 266
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2021-12-05
博客简介:

weixin_64883584的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    330
    当月
    0
个人成就
  • 获得355次点赞
  • 内容获得10次评论
  • 获得355次收藏
创作历程
  • 33篇
    2024年
  • 1篇
    2023年
成就勋章
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

代码随想录算法训练营day40|343. 整数拆分、96.不同的二叉搜索树

2.确定递推公式:dp[i] += dp[j - 1] * dp[i - j];4.遍历顺序:dp[i] 是依靠 dp[i - j]的状态,所以遍历i一定是从前向后遍历,先有dp[i - j]再有dp[i]。从递归公式:dp[i] += dp[j - 1] * dp[i - j]可以看出,节点数为i的状态是依靠 i之前节点数的状态。2.确定递推公式:dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j))1.确定dp[i]的含义:正整数i拆分得到的最大乘积。
原创
发布博客 2024.03.07 ·
492 阅读 ·
9 点赞 ·
1 评论 ·
11 收藏

代码随想录算法训练营day39|62.不同路径、63. 不同路径 II

62.不同路径动态规划五部曲:1.确定dp[i][j]的含义:从(0,0)走到(i,j)的所有路径数2.确定递推公式:dp[i][j] = dp[i][j-1]+dp[i-1][j]3.dp数组如何初始化:dp[0][j]=1,dp[i][0]=1 (第一行无法从上往下走到,不能从转移方程里推导出来,所以必须初始化,第一列也是一样的。
原创
发布博客 2024.03.07 ·
463 阅读 ·
8 点赞 ·
0 评论 ·
10 收藏

代码随想录算法训练营day38|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的。中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的。中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的。2.确定递推公式:dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])2.确定递推公式:dp[i] = dp[i-1]+dp[i-2]
原创
发布博客 2024.03.06 ·
517 阅读 ·
8 点赞 ·
0 评论 ·
8 收藏

代码随想录算法训练营day37|738.单调递增的数字

1.如98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]减一,strNum[i]赋值9,这样这个整数就是89。即遇到strNum[i - 1] > strNum[i]的情况,让strNum[i - 1]减一。3.因为需要找最大数字,所以需要用一个flag来标记从哪里开始赋值9。2.还要考虑遍历顺序,只有从后向前遍历才能重复利用上次比较的结果。738.单调递增的数字。
原创
发布博客 2024.03.06 ·
537 阅读 ·
8 点赞 ·
0 评论 ·
9 收藏

代码随想录算法训练营day36|435. 无重叠区间、763.划分字母区间、56. 合并区间

enumerate还可以接收第二个参数,用于指定索引起始值。或者先把第一个元素添加进result,接着进行比较。435. 无重叠区间。435. 无重叠区间。763.划分字母区间。
原创
发布博客 2024.03.05 ·
495 阅读 ·
6 点赞 ·
0 评论 ·
10 收藏

代码随想录算法训练营day34|860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

可以看出首先第一组重叠气球,一定是需要一个箭,气球3,的左边界大于了 第一组重叠气球的最小右边界,所以再需要一支箭来射气球3了。以题目示例: [[10,16],[2,8],[1,6],[7,12]]为例,如图:(方便起见,已经排序)所以局部最优:遇到账单20,优先消耗美元10,完成本次找零。全局最优:完成全部账单的找零。insert()方法仅将元素插入列表。按照起始位置排序,那么就从前向后遍历气球数组,靠左尽可能让气球重复。从前向后遍历遇到重叠的气球了怎么办?406.根据身高重建队列。
原创
发布博客 2024.03.04 ·
479 阅读 ·
7 点赞 ·
0 评论 ·
8 收藏

代码随想录算法训练营day33|1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

i从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算curSum。首先如果总油量减去总消耗大于等于零那么一定可以跑完一圈,说明各个站点的加油站剩油量rest[i]相加一定是大于等于零的。注意要从前往后比较右侧比左侧评分高的情况,从后往前比较左侧比右侧评分高情况。每个加油站的剩余量rest[i]为gas[i] - cost[i]。
原创
发布博客 2024.03.03 ·
440 阅读 ·
7 点赞 ·
0 评论 ·
7 收藏

代码随想录算法训练营day32|55. 跳跃游戏、45.跳跃游戏II

贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最少步数。每移动一个元素,cover 得到该元素数值(新的覆盖范围)的补充,让 i 继续移动下去。而 cover 每次只取 max(该元素数值补充后的范围, cover 本身范围)。每次移动取最大跳跃步数(得到最大的覆盖范围),每移动一个单位,就更新最大覆盖范围。不一定非要明确一次究竟跳几步,每次取最大的跳跃步数,这个就是可以跳跃的覆盖范围。这个范围内,别管是怎么跳的,反正一定可以跳过来。
原创
发布博客 2024.02.29 ·
449 阅读 ·
9 点赞 ·
0 评论 ·
10 收藏

代码随想录算法训练营day31|理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和

局部最优:当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”,因为负数加上下一个元素 “连续和”只会越来越小。这个四步其实过于理论化了,做题的时候,只要想清楚 局部最优是什么,如果推导出全局最优,其实就够了。为了满足更多的小孩,就不要造成饼干尺寸的浪费。全局最优:选取最大“连续和”
原创
发布博客 2024.02.28 ·
465 阅读 ·
9 点赞 ·
0 评论 ·
9 收藏

代码随想录算法训练营day29|491.递增子序列、46.全排列、47.全排列 II

图中我们对同一树层,前一位(也就是nums[i-1])如果使用过,那么就进行去重。本题求自增子序列,是不能对原数组进行排序的,排完序的数组都是自增子序列了。中已经详细讲解了排列问题的写法,在。中详细讲解了去重的写法,
原创
发布博客 2024.02.27 ·
342 阅读 ·
7 点赞 ·
0 评论 ·
9 收藏

代码随想录算法训练营day28|93.复原IP地址、78.子集、90.子集II

本题就是40.组合总和II 和 78.子集这两道题目的结合。这道题同样也是切割问题,从图中红线部分,可以看出。
原创
发布博客 2024.02.26 ·
388 阅读 ·
9 点赞 ·
0 评论 ·
6 收藏

代码随想录算法训练营day27|39. 组合总和、40.组合总和II、131.分割回文串

【代码】代码随想录算法训练营day27|39. 组合总和、40.组合总和II。
原创
发布博客 2024.02.25 ·
509 阅读 ·
8 点赞 ·
0 评论 ·
8 收藏

代码随想录算法训练营day25|216.组合总和III

跟77题差不多,要搞清楚k确定了递归的深度。依旧用回溯三部曲,就是终止条件多了。216.组合总和III。
原创
发布博客 2024.02.23 ·
598 阅读 ·
9 点赞 ·
0 评论 ·
7 收藏

代码随想录算法训练营day24|理论基础、77. 组合

理论基础理论基础回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。
原创
发布博客 2024.02.23 ·
1046 阅读 ·
24 点赞 ·
0 评论 ·
21 收藏

代码随想录算法训练营day23|108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树 、总结

代码随想录。
原创
发布博客 2024.02.22 ·
433 阅读 ·
10 点赞 ·
1 评论 ·
9 收藏

代码随想录算法训练营day22|235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

二叉搜索树递归不用分前中后序,因为他本身就可以看作是排好序的二叉树,且中序遍历的值是升序的。
原创
发布博客 2024.02.21 ·
384 阅读 ·
7 点赞 ·
0 评论 ·
9 收藏

代码随想录算法训练营day21|530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

在回溯的过程中,必然要遍历整棵二叉树,即使已经找到结果了,依然要把其他节点遍历完,因为要使用递归函数的返回值(也就是代码中的left和right)做逻辑判断。求最小公共祖先,需要从底向上遍历,那么二叉树,只能通过后序遍历(即:回溯)实现从底向上的遍历方式。后序遍历(左右中)就是天然的回溯过程,可以根据左右子树的返回值,来处理中节点的逻辑。把二叉搜索树转换成有序数组,然后遍历一遍数组,就统计出来最小差值了。递归法(版本二)利用中序递增,找到该树最小值。回溯,二叉树回溯的过程就是从低到上。
原创
发布博客 2024.02.20 ·
393 阅读 ·
7 点赞 ·
1 评论 ·
9 收藏

代码随想录算法训练营day20|654.最大二叉树、617.合并二叉树 、 700.二叉搜索树中的搜索 、 98.验证二叉搜索树

654.最大二叉树654.最大二叉树构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。跟思路一样617.合并二叉树最开始终止条件写成了这个是错的,一定要想好终止条件怎么写700.二叉搜索树中的搜索题目链接/文章讲解:这就决定了,二叉搜索树,递归遍历和迭代遍历和普通二叉树都不一样。(终止条件还是会写错)递归函数还有返回值,所以用一个变量将其接住,所以要迭代法:因为二叉搜索树的特殊性,也就是节点的有序性,可以不使用辅助栈或者队列就可以写出迭代法。
原创
发布博客 2024.02.19 ·
373 阅读 ·
8 点赞 ·
1 评论 ·
11 收藏

代码随想录算法训练营day18|513.找树左下角的值、112. 路径总和 113.路径总和ii

可以使用前序遍历(当然中序,后序都可以,因为本题没有 中间节点的处理逻辑,只要左优先就行),保证优先左边搜索,然后记录深度最大的叶子节点,此时就是树的最后一行最左边的值。本题还需要类里的两个全局变量,maxLen用来记录最大深度,result记录最大深度最左节点的数值。图中可以看出,遍历的路线,并不要遍历整棵树,所以递归函数需要返回值,可以用bool类型表示。当遇到叶子节点的时候,就需要统计一下最大的深度了,所以需要遇到叶子节点来更新最大深度。在找最大深度的时候,递归的过程中依然要使用回溯。
原创
发布博客 2024.02.19 ·
578 阅读 ·
8 点赞 ·
1 评论 ·
7 收藏

代码随想录算法训练营day17|110.平衡二叉树 、257. 二叉树的所有路径、404.左叶子之和

然后是递归和回溯的过程,上面说过没有判断cur是否为空,那么在这里递归的时候,如果为空就不进行下一层递归了。这道题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。因为是前序遍历,需要先处理中间节点,中间节点就是我们要记录路径上的节点,先放进path中。递归的遍历顺序为后序遍历(左右中),是因为要通过递归函数的返回值来累加求取左叶子数值之和。因为在下面处理单层递归逻辑的时候,要做回溯,使用vector方便来做回溯。这道题是求二叉树的高度,采用后序遍历的方法,即。
原创
发布博客 2024.02.06 ·
377 阅读 ·
8 点赞 ·
0 评论 ·
9 收藏
加载更多