自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 算法训练营day66-孤岛总面积-沉没孤岛-水流问题-建造最大岛屿

【代码】算法训练营day66-孤岛总面积-沉没孤岛-水流问题-建造最大岛屿。

2024-06-21 22:52:00 203

原创 算法训练营day65-岛屿连同问题

【代码】算法训练营day65-岛屿连同问题。

2024-06-20 19:47:41 253

原创 算法训练营64-图论-深度优先优先搜索(dfs)-广度优先搜索(bfs)

【代码】算法训练营65-图论-深度优先优先搜索(dfs)-广度优先搜索(bfs)

2024-06-19 22:14:02 251

原创 算法训练营day63

【代码】算法训练营day63。

2024-06-18 11:22:50 143

原创 算法训练营补签day25

【代码】算法训练营补签day25。

2024-06-17 17:48:57 96

原创 算法训练营day62

在上一题的基础上加了一个,map确定 数组num1里元素最右边的值。真 暴力解法,但会超时。

2024-06-17 13:08:35 170

原创 算法训练营day60

【代码】算法训练营day60。

2024-06-16 22:47:03 229

原创 算法训练营day59

这里的初始化第一列为1,表示t是空字符串 在s的子序列中有1种情况。

2024-06-14 22:23:56 178 1

原创 算法训练营day24

可以用二叉树最近公共祖先来做。

2024-06-13 21:47:04 323

原创 算法训练营day58

动态规划,其实和之前最长公共子序列一样,只不过最后就是比较以下dp数组的值是否和字符串s的长度相同。

2024-06-13 15:25:25 291

原创 算法训练营day23补签

在递归里操作,主要就是更新maxcount 然后要把reslut也更新。

2024-06-12 15:53:44 211 1

原创 算法训练题day57

不太一样,如果是连续的那代码就一样了,这里的区别就在于如果两个字符不相等,应该取max(dp[i - 1][j], dp[i][j - 1])这道题其实可以转换成寻找两个数组中不连续的子序列的最大长度,就和上题一样了。其实动态规划和贪心的本质上都是一样的。这道题的子序列是不连续的,所以很。

2024-06-12 11:55:50 161

原创 算法训练营day56

【代码】算法训练营day56。

2024-06-11 22:17:03 276

原创 算法训练营day53

这道题就是在 买卖股票Ⅱ上多了一个手续费而已。

2024-06-11 10:05:56 223

原创 算法训练营day52

【代码】算法训练营day52。

2024-06-10 21:47:27 437 1

原创 算法训练营day51

要搞明白dp数组的含义, dp数组包含两种情况,持有股票,这个可以持有之前的也可以持有今天的;不持有股票,可以是之前就不持有,也可以今天卖出。

2024-06-10 11:47:27 430

原创 算法训练营day50

相比于1来说就是将环形分解成两种情况,考虑首元素 考虑尾元素。

2024-06-08 21:27:09 254

原创 day49

【代码】day49。

2024-06-04 20:38:26 135

原创 算法训练营day48

当时爬楼梯只有 1,2两种情况所以可以用斐波那契数列做,当上楼的阶梯数为n时,可以抽象成完全背包问题,这里题目要求时排列,所以应该是先遍历背包,再遍历物品,这样 可以包含 1、2 和 2、 1。这里主要是物品没想白怎么表示,想的是根据n 把能取到的完全平方数列出来,再进行遍历,但是解法里的遍历就很巧妙。初始化没有想到,递推公式想到了。

2024-06-04 17:10:29 393

原创 算法训练营day46

完全背包和01背包的区别就是是否可以重复使用,在代码上就是 j 的 for 循环从前向后遍历还是从后向前遍历。先物品再背包是组合,先背包再物品是排列。

2024-06-01 17:07:23 243

原创 算法训练营day45

这道题主要的思路是把题目转换成分成两份,然后转换成一个重量为 sum / 2 的背包去装石头,尽可能将背包装的最大,那么最后最小省的石头就是 (sum - dp[j]) - dp[j] 前边是剩下的石头,后边是能装的最大的石头。

2024-05-31 13:59:51 298

原创 算法训练营day44

题目1:二维dp数组求 01 背包。题目2:一维dp数组求背包\。

2024-05-30 22:24:58 188

原创 算法训练营day43

【代码】算法训练营day43。

2024-05-29 19:27:08 340

原创 算法训练营day42

【代码】算法训练营day42。

2024-05-28 15:36:02 281

原创 算法训练营day41

动态规划理论基础(主要就是确定动态规划的几个步骤)

2024-05-27 20:08:39 494

原创 算法训练day39

【代码】算法训练day39。

2024-05-25 19:34:57 229

原创 补签22day

二叉搜索树定义:左孩子小于节点,右孩子大于节点,且左右子树也符合 该规律。真的简单啊,其实整体思路没错,只是乱没想清楚。自己AC过了,确实对递归理解深入了一些。

2024-05-24 23:37:44 136

原创 算法训练营38

这道题其实跟上面那个像,我写的代码是遇到重复的就删除,不过没有AC过。

2024-05-24 15:42:37 115

原创 算法训练营day37

这道题思路确实不难,想明白了就是固定思路,五块就收,十块收了找五块,二十这里注意,可以找 10 + 5 也可以 找 5 + 5 + 5 ,如果能都能找那就返回true, 否则就是false ,我这里用的是数组记录,其实用int 类型计数就可以了,ti。这里根据身高排序,有大到小,然后如果身高一样就 根据 k 由小到大,然后根据k进行插入相应的位置。

2024-05-23 17:08:58 176

原创 算法训练营36

代码随想录上的思路,让加油 - 耗油,如果所有的总和都<0 那肯定跑不完,然后用一个currsum 统计从 0 开始到当前i 的 剩余油之和,如果 < 0 说明 起始位置肯定在为 i + 1,然后currsum 置零,在重复上面操作,最后返回 start 就行。这道题从两边开始算就好,先从左向右只考虑右边小孩比左边小孩大,然后从右向左考虑,最后取两次糖果数组里大的,然后最后求和即可。根据通过情况反复挑战最终AC过了,这里和原来的差别是他的排序是用绝对值排序的,这样的思路会很简单。

2024-05-22 23:16:34 333

原创 算法训练营day35

贪心算法的思路是根据每个元素看能覆盖的大小,然后更新,更新的时候要取大的覆盖,如果能够覆盖最后的元素就返回true。贪心算法思路很简单,就是把每一天的利润都算出来,然后把整的加起来就是结果。

2024-05-22 21:18:35 310 2

原创 算法训练营day34

贪心算法的思路是,如果当前的和为负数的,就舍去这个和然后重新进行sum累加,同时用reslut记录局部最优,就是每次累加判断sum > max 如果大于就更新max。把大的饼干分给胃口最大的。暴力解法会超时,代码如下。

2024-05-22 16:46:10 217 1

原创 day32算法训练营

剪枝:每次sum > target就return 这已经算是剪枝了,但是剪枝不够彻底,因为约束了k个,所以也可以再for循环的条件是进行剪枝, i < = n - (k - path.size() ) + 1。这个去重是要对树层里的相同元素剪枝,树枝里不进行剪枝,剪枝可以通过比下标进行也可以定义一个数组 这里是 如果used[i - 1] = true证明是树枝,这时候可以选取相同的元素,如果used[i - 1]=false 证明是树层,这时候就要 continue剪枝了。

2024-05-19 19:07:56 544

原创 算法训练营day31

这道题主要就是注意 for 循环i从0开始,然后就是需要用used数组存储元素使用情况,然后used和path都要回溯。这里不能对元素进行排序,所以去重需要用一个 set来进行去重。

2024-05-18 20:31:29 106

原创 补签打卡day21

这个我还用最开始的思路,直接记录所有路径,然后把复合的再加入,但是这个相较于代码随想录上的算法,会多for循环去判断,可以直接在递归函数里加入 int sum 然后递减,如果 sum == 0证明找到了路径,就加入到结果里。递归算法的思路就是去找最大深度,然后深度变化之后就进行值得改变,因为顺序是按左右来的所以不用考虑最左边得值到底是深度最大得左子叶还是右子叶。代码随想录里的解法:通过判断叶子节点时sum 是否减到 0 同时,如果递归的时候路径之和== target 就一路返回true.

2024-05-16 21:28:22 311

原创 算法训练营day30

这道题和分割回文串 比较相似,主要是终止条件,通过设置IP的点来进行判断,如果 pointnum == 3 说明已经分割出四个字符串了,就可以终止,前面三个 再for循环里判断了,但是最后一个需要再终止条件里进行判断,我选择用一个数组存储字符串最后再拼合,这个比较麻烦但是感觉相比再字符里直接加点清晰明了一些。不过要注意最后一个字符串加入path 也要进行pop回溯。之后判断是否合法,首先是 begin > end 不对, 头不能是0, 不能有数字以外的非法字符,字符数不能大于255。

2024-05-16 17:02:47 286

原创 算法训练营29day

这道题主要就是注意startindex得值,剪枝是加在for循环里,如果sum + 当前值 <= target 再进行操作,否则剪枝。首先排序,主要就是排序之后相邻相同的元素只第一个进行递归搜索,后面的都不进行递归搜索,这就是去重。这道题目主要还是分割得时候如何弄明白。

2024-05-15 22:53:48 152

原创 算法训练营28day

不过代码随想录上的解法,递归函数里面有一个sum的参数,相当于每次 再push到path的时候就进行了加和,而我是在每次终止条件里添加的。这个操作会让剪枝操作更加简单明了,不过剪枝操作不是那么熟练,以后要复习加深一下。这道题其实最开始的思路还是for循环解法,然后看了看题解,这个是根据index来确定深度,然后for循环是从 i = 0 开始,横向遍历数字对应的字符集合,然后递归相当于纵向遍历输入的号码。这道题其实和昨天的组合很相似,只是多加个是否等于目标值的判断即可。

2024-05-14 15:44:25 177 1

原创 训练营day27

出去玩了几天 ,上午先把 5.6 号的三个题目又做了一遍,对递归有了新的体会,自己写的时候每道题都会有一点小问题,然后看题解,发现就是大体思路有但是会有些注意不到或者没考虑到的,总的来说新的一边真的是会有新的理解。回溯三部曲:确定递归函数参数返回值;回溯法解决的问题:组合;剪枝优化,是在for循环里,对i做限制,即可。回溯搜索法是纯暴力搜索算法;看完视频之后写这个还可以。回溯法一般抽象成N叉书。

2024-05-13 20:49:02 129 1

原创 算法训练营day20

然后看了看代码,首先是对于递归的写法有点理解了,然后就是那个确定左叶子的条件,这里确定左也是是通过父节点确定的,(node->left!= NULL && node->left->left == NULL & node->left->right == NULL)这个讲的递归很详细,这个 明白之后,就是要注意如果左子树是 -1 就是高度差>1 就return -1。平衡二叉树每个节点的左子树和右子树高度差<=1,写的时候明显感觉递归写的很懵逼。我只能说很懵逼,先这样吧,后面再详细的看一看。

2024-05-06 16:59:51 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除