- 博客(28)
- 收藏
- 关注
原创 代码随想录刷题打卡day43
2.组合个数的问题递推公式dp[j] = dp[j-nums[i]],dp[j]表示装满j的背包有dp[j]种方法(没理解,但是记下来)1.完全背包的遍历顺序:先背包后物品是排列数,先物品后背包是组合数。3.因为可以重复选择,所以从小到大遍历物品。
2023-11-30 12:01:08
435
原创 代码随想录刷题打卡day32
这道题思路很巧妙,是通过看每一个格子能覆盖的最大值,因为结果只需要返回true和false,而不用返回路径,所以问题简化很多。
2023-11-30 11:59:35
411
原创 代码随想录刷题打卡day40
(i-j)*j,相当于把i拆成i-j和j两个数字,而dp[i-j]*j是把i拆成大于两个数字,因为dp[i]表示i被拆之后得到的最大积。代码不难,思路比较重要。
2023-11-01 11:25:34
123
原创 代码随想录刷题打卡day28
举个栗子,当我们第一次从[0 1 2]中选了1,此时used[0 1 0],在进入backtracking后(树枝)nums[i]重新开始从nums[0-2]遍历,那么nums[0]的used[0]=false表示没用,加入到path,而nums[1]的uesd[1]=true,表示path中已经有1了。是一样的,唯一的不同在于,全排列的for循环是从0开始,(那么下一层也会遍历到自身)因此要多一层判断,判断当前的数字是否被用过 if(used[i]==false),没有的话才进行下面的操作。
2023-10-20 11:33:16
61
1
原创 代码随想录刷题打卡day26
这道题和之前的题不一样的地方在于,他的数组是有重复数字的,而且要求一组结果中可以有这些重复数字(树枝),但是层之间不能有重复(树层)第一题依旧是回溯算法的问题,越来越顺畅了,今天思路和老师的思路一模一样,代码也是自己写的,但一些小细节还是要多加注意。
2023-10-19 11:20:57
100
1
原创 代码随想录刷题打卡day27
这道题就是搜集所有节点,包括了空节点,思路很简单,但是要注意在回溯时要先收集结果,以防漏掉自身,代码中这点也标注了。for循是遍历层,而baktracking遍历树枝。本题数组有重复,但要求结果不重复,和之前做的。
2023-10-19 11:18:17
134
1
原创 代码随想录刷题打卡day25
思路和之前的组合问题一样,如果输入两个数字,那么树的深度就是2,当index遍历到2时就可以收割答案了。和昨天的组合体很像,自己也能写出来,但是单层回溯这块第一次没完整写出来,看了解析就顺畅了。
2023-10-17 10:47:30
37
1
原创 代码随想录刷题打卡day24
今天开始回溯算法,回溯算法用于组合,分割,子集,排列,棋盘问题等。所有回溯法的问题都可以抽象为树形结构。回溯三部曲为:1.确定返回值 2.确定终止条件 3.确定单层逻辑。
2023-10-16 10:25:02
47
1
原创 代码随想录刷题打卡day21
搜索到的第一个位于p,q之间的数字即我们要找的结点。前两天参加姐姐的婚礼,拉了两天,会慢慢补起来的。这个只要遍历到空结点就新添加一个结点就行。
2023-10-13 22:32:31
61
原创 代码随想录刷题打卡day17
看了视频明白的,代码自己就能写出来,引用传递的回溯方法懂了,但是精简代码中如何用值传递回溯还没看懂。后序遍历递归法实现,第一次写的时候没有想到在每一个结点处都要判断返回一次,导致写错。
2023-10-09 15:37:17
49
1
原创 代码随想录刷题打卡day15
思想和上一题差不多,但是有一个坑要注意,深度是根节点到叶子的距离,因此如果存在莫个结点的左树或者右树为空的情况,不能只加到为空的位置,而是:若左树为空就1+右树最小深度,右树同理,最后再取二者最小值加1。通过后序遍历,用递归法求得每个节点左树右树的深度。为什么采用后序遍历,因为最后访问根节点会将迭代的值返回给根节点。最后取左右最大的深度+1(加根节点本身)即可。这道题我选择了和第一题一样的后序遍历法,自己写出来的棒呆!
2023-10-09 10:18:22
126
1
原创 代码随想录刷题打卡day13
2.学习了下迭代法前中后遍历二叉树,中序遍历看的有点迷糊,但还是看明白了,希望二刷可以自己写出来。递归法遍历二叉树的前中后顺序指的是中间节点的遍历顺序,写了前序遍历,后两种方法类似。今天开始二叉树的刷题。
2023-10-08 20:32:17
64
1
原创 代码随想录刷题打卡day12
栈的应用,在写时要考虑三种情况:1.左括号冗余 ,判断条件为最后栈不为空;2.右括号冗余,判断条件为循环未结束而栈已空;3.括号匹配错位,判断条件为栈顶元素与当前右括号不一致;学数据结构的时候就会这个算法了。
2023-10-06 16:41:51
42
1
原创 代码随想录打卡day8
这道题属实有难度,之前做过类似的但是想起来都很困难。但是看了老师的讲解视频后懂了,也能自己敲了。需要好好斟酌思考这道题,值得回味!这个用自己写的反转代码好理解一些,但直接调用c++库我也看懂了,无所谓。但是在写反转的开始结束下标时,最好画个图,以防出错。
2023-09-27 23:05:36
138
1
原创 代码随想录刷题打卡day7
和昨天的“有效的字母异位词”思路一模一样,但是多了些细节和判断条件。看了视频懂了,代码不难。下次遇到这种题就会了。这道题的去重操作属实没看懂,再接再厉。
2023-09-26 22:58:47
65
1
原创 代码随想录刷题打卡day6
做完这道题感觉自己需要补一下vector,和STL库的东西,最近马上国庆,我会抽时间补起来的。绿子当时说“你不一定会写这道题”,现在发现他说的对,确实是我今天最费劲的一道题,主要是第一次用到unordred_map,思路清楚了也没能自己写的出来。了解哈希表的知识和用法后,明白这道题的思路还是很好写出代码的。这道题用数组做哈希表,是因为26个字母,该表长度是给定的。因为需要一直循环,求和每一位的数字和,但是如果出现重复的数字就会陷入死循坏。这个题给我,我是不会立马想到哈希表的算法的,他的方法精髓就在“
2023-09-25 15:15:48
103
1
原创 代码随想录刷题打卡day4
这是找到环形结点的经典问题,推导过程我已经理解,且是自己写的代码,很棒。,思路是清晰的,但写的时候不好把控哪个需要作为临时结点被保存,想的不够深入,知道大概思路但不容易整理的非常有条理且清晰。刚开始自己思考的的时候设置的指针有点冗余且混乱,但是在看了示例代码后就清晰了,希望下次遇到能思路更清晰。这道题看了解题思路后觉得双指针在这里的运用非常秒,虚拟结点也很重要,看了思路后也能自己写出来。下次写链表题多要习惯性的运用虚拟头节点。但是在写的时候还是存在一些小问题,希望二刷的时候注意,但整体已经很棒了。
2023-09-23 19:33:28
63
1
原创 代码随想录刷题打卡day3
这道题的初始化链表这块需要加强,别的查找,删除,添加都能自己写出来,很棒!但是最后运行一直有问题,导致花了太多时间,决定二刷再看。这道题用双指针的方法,学会了,也理清楚了。希望看到类似的也就会了。这回是真的懂了,看了下公开课,讲的很清楚。
2023-09-23 09:55:56
96
1
原创 代码随想录刷题打卡day2
自己写出来的,而且和第一次写的不太一样,循环条件比之前有修改。但是后面又忘了更新下一次循环的起始坐标点,再接再厉!,也能第一时间想到用双指针法,且写的和第一次不一样,但也同通过了,很棒。,能想出来方法,写的时候还是没能一次性实现,需要再磨砺。
2023-09-22 14:59:01
205
原创 代码随想录刷题打卡day1
比如27.移除元素,第一时间想到了双指针,这点很棒!但是在具体实现的时候有点迷糊了,但是现在又清晰了,记住:“当快指针指的元素不是查找元素val时,快慢指针都移动一次!但当第一次碰到查找的元素val时,慢指针指到下一个元素位置,而快指针继续移动(到下一个不是val的值)即可,再把快指针遇到的val赋给当前慢指针。比如704.二分查找,第一次写的时候把mid定义在了while之前,导致死循环。其实是二刷这两道题,说实话比第一次有思路的多,但也有点磕磕绊绊。[刷题笔记day1]
2023-09-20 22:51:40
393
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人