- 博客(18)
- 收藏
- 关注
原创 动态规划01
视频讲解:https://www.bilibili.com/video/BV16G411c7yZ。视频讲解:https://www.bilibili.com/video/BV1ve4y1x7Eu。视频讲解:https://www.bilibili.com/video/BV1Ld4y1k7c6。视频:https://www.bilibili.com/video/BV1f5411K7mo。视频:https://www.bilibili.com/video/BV17h411h7UH。
2024-10-14 23:00:09
327
原创 贪心题目总结02
刚开始思考的时候觉得想昨天的题目(摆动序列)一样需要去找准波峰和波谷,其实根本不用,这道题只要记录好区间,只取到正利润的区间就好了。注意只有一个点的意思就是到终点了,整体思路就是记录好当前可到达的最大区间,如果比数组的size大就可以返回true。
2024-09-23 11:01:46
357
原创 贪心题目总结01
注意两层遍历的顺序不可以错,因为要满足尽可能多的胃口,而不是饼干,胃口永远是走的比较快的,饼干自减的速度比较慢,因为要保证饼干的数字尽可能是大的。贪心相关的题目基本就是模拟题目的要求,如果看了几分钟妹有思路就早点研究题解吧。记录前一个差值和当前的差值,如果符号不同就结果加一。
2024-09-22 22:12:44
338
原创 回溯算法题目总结04
全排列要求的是每一个元素在这个树杈上不可以被重复使用,这里不需要记录开始查询的下标,而是要弄一个记录是否元素被使用过的数组,如果发现被使用过就跳过这个元素进入下一次循环。,因为 used[i - 1] 要一直是 true 或者一直是false 才可以,而不是 一会是true 一会又是false。所以这个条件要写上。如果找到了,它会返回一个指向该元素的迭代器;uset在每一层中都会重新初始化,所以他只负责记录当前一层中该元素是否被使用过。本题关键在于同层树中,不可以使用一样的元素,但是在同一个树枝中可以。
2024-09-18 13:08:29
489
原创 回溯算法题目总结03
回溯做多了,训练成板子题了,这道题注意考虑不可以重复,而且来一个就要往结果里面放,甚至可以不需要结束递归的条件因为本来for循环就会停止。40.组合总和II 和 78.子集的结合版。
2024-09-17 21:42:15
242
原创 回溯算法题目总结02
注意昨天的题目,递归时候下标加一是代表元素只能用一次,但是这里不需要加一,代表本身这个元素可以重复使用,但是最终不会出现重复的结果类似于(223)(322)这样,因为循环控制后就不会再走回头路。都知道组合问题可以抽象为树形结构,那么“使用过”在这个树形结构上是有两个维度的,一个维度是同一树枝上使用过,一个维度是同一树层上使用过。回看一下题目,元素在同一个组合内是可以重复的,怎么重复都没事,但两个组合不能相同。要在搜索的过程中就去掉重复组合。这么一说好像很简单!
2024-09-17 15:58:08
547
原创 回溯算法题目总结01
使用三个全局变量,一个记录结果,path数组用来记录每一次回溯得到的结果,当path中的元素个数是k的时候就说明一个存好了一个组合好的内容,把结果放入res后,就会递归调用把path清空。按照上面的思路一把写过,把控制条件按要求改一下,注意对path的清空,还有判断条件中的return的位置。对于每一层中数字和字母的映射,是在每一层中进行对应好的,不然就会增多参数的传递量。这道题如果直接暴力解决的话,会出现k层的循环,一旦层数多起来就很难解决。整个过程就是k为多少,就会存在多少层调用。
2024-09-16 14:48:18
315
原创 代码随想录第14 15天 二叉树题目合集
要检查左右子树是否为空的情况,根节点一边为空这种情况不是最小深度,要去另一边继续找到正确的叶子结点。想好递归的结束条件,递归进行下去就是把两个子节点先进行交换。
2024-07-17 21:00:14
219
原创 代码随想录第9天 字符串相关题目(2)
对于删除空格的操作,双指针,用一个slow来操作,加上空格就开始挪,挪到一个单词的结束。三步走,移除多余空格,整体逆序字符串,每个单词内部逆序(变为正序)要把后面的一部分整体挪到前面来,先整体逆序,再对两个部分分别逆序。kmp问题以后再说,今天先挖个小坑。
2024-07-12 10:12:55
254
原创 代码随想录第8天 字符串相关题目(1)
统计字符串中数字的个数,之后按数字个数进行扩容,一个指针指向原来的末尾,另一个指向新扩容后的末尾,碰到数字就替换,没碰到就把原来的字母挪进来。不要使用库函数,纯纯考一下reverse的底层是怎么实现的。注意本题是acm模式,把输入可以放在循环中进行输入输出。
2024-07-10 21:34:08
275
原创 代码随想录第7天 哈希表相关题目(2)
先把前两个数的和以及出现的个数存在map中,然后遍历后面两个数组,在map中看看是否能匹配到四数和为零,如果为零,给结果加上键值对value(出现的次数)用哈希的话,去重操作比较复杂,这里用双指针进行操作,在循环的过程中对三个元素进行去重。继续学习和熟悉map set的相关用法。很简单,搞一个数组就行,和。
2024-07-09 15:14:21
374
原创 代码随想录第6天 哈希表相关题目
搞一个26个元素大小的数组,把各个字母的个数放进去统计,最后再比较,用到哈希的思想。整一个map,放置元素和下标,每次放置时与目标进行对比。这道题目没有限制数值的大小,无法使用数组来做哈希表。学会使用unordered_map。注意:取到数字每一位进行平方的操作。 循环条件的判断。
2024-07-08 22:35:14
218
原创 代码随想录第4天链表相关题目
方法一:比较两个链表的长度,然后拉齐尾部(让长的链表指向差值位置),同时开始向后走并进行比较,找到了相同的指针就返回这个公共的节点,如果走到最后就返回空。纯纯数学推导题,记一下就行,快指针走两步,慢指针走一步,找到相遇位置,找到相遇位置之后同时从该位置和head开始走两个指针,相遇位置就是入口,返回即可。妙妙妙~~A走完换到B,B走完换到A,最后走到公共节点位置的总距离是一样的,如果找到了就是公共节点,或者就是null。用两个指针岔开n个距离进行同时遍历,快指针达到尾部后说明慢指针指向了要删除的位置。
2024-07-06 17:34:33
254
原创 代码随想录第3天203.移除链表元素 707. 设计链表
假设一个头结点来便于操作,把head给到头结点的下一个位置,把整个链表给到cur来进行操作,因为要留出一个节点记录初始位置,在删除的过程中要进行delete掉多余的节点,最后删掉头部的虚拟节点。关键是循环中的四步,通过双指针要记录好每两个需要操作的节点,先用临时指针保存好下一个要操作的位置再进行指针的转向,转向后更新pre到当前cur位置,cur变成第一步用tmp存起来的节点位置。创造一个头结点来方便解决问题,注意delete掉多余的元素释放空间。
2024-07-05 20:07:15
460
原创 代码随想录第二天977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
首先左边不动,右边开到最大使这个区间符合条件,然后缩小左边,缩小到不符合条件就扩大右边,直到右边碰到了边界停止。双指针问题,前后各指向一个元素,比较大小,大的就放里面,移动指针,最后直到所有的元素放在新的vector中返回。中间元素单独处理,每一圈控制好前后位置,比如4×4,最外层循环只改变三个量,达到四个步骤的均衡。第一个循环控制右边界的大小,内层循环表示当达到条件后缩小窗口。每一层控制缩圈边界减一,起始位置都加一。
2024-07-04 21:18:03
549
原创 代码随想录第一天|704.二分查找 27. 移除元素
要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是。
2024-07-03 18:50:02
559
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅