- 博客(7)
- 收藏
- 关注
原创 代码随想录Day07
拆分遍历j,j是从1开始遍历,拆分j的情况,在遍历j的过程中其实都计算过了。解题思路:1.确定dp数组的含义,left 代表符号为+的数组加和,right代表符号为-的数组之和,left - right = target。当看到这道题目时,只能想到二叉树的后序遍历,从叶子节点往上返回数据,但是不知道dp数组该如何保存,也从来没有见过这种形势的题目。对应三种状态 0 (该节点无覆盖),1(该节点有监控) ,2(该节点有覆盖,空节点)左孩子有覆盖,右孩子有覆盖,那么此时中间节点应该就是无覆盖的状态了。
2024-03-28 16:24:13 616
原创 代码随想录Day06
针对以上情形,result 初始为 1(默认最右面有一个峰值),此时 curDiff > 0 && preDiff <= 0,那么 result++(计算了左面的峰值),最后得到的 result 就是 2(峰值个数为 2 即摆动序列长度为 2)我们只需要在 这个坡度 摆动变化的时候,更新 prediff 就行,这样 prediff 在 单调区间有平坡的时候 就不会发生变化,造成我们的误判。解题思路:因为题目要求的是最长摆动子序列的长度,所以只需要统计数组的峰值数量就可以了。用数组的当前数减去前一个数。
2024-03-25 15:41:28 719
原创 代码随想录Day05
1.递归结束条件,就是root==null || root == p || root == q 这几种情况的时候结束,返回root,开始回溯。3.对子节点的处理,返回左右节点应该怎么处理呢,当都为null时,返回null,都不为空,返回root,其中一个为空,返回不为空的哪个节点。这是一个组合的过程,所以需要一个startIndex的指针,循环结束的条件就是这个指针指到与字符串长度相同的时候,返回。递归的过程,不断截取字符串,并判断是不是回文串,是就进行递归,不是就continue。
2024-03-20 20:28:24 339 1
原创 代码随想录Day04
这道题目乍一看还是有点思路的,就是遍历二叉树,然后放到map集合里,key是二叉树的值,value是出现的次数。但这个题还有可能出现多个众数,挨个选取也可以,但这样时间空间复杂度也比较高,这是二叉搜索树,肯定有更为简洁的解题方法。这让我手足无措的感觉。解题思路:还是要考虑二叉搜索树中序遍历的特点,就等于是一个升序的数组,右边的元素大于等于左边的。本题一看有种无从下手的感觉,但可以根据区间分割来确定该树,但自己对还原的过程没那么了解。一定要注意的是,数组切割过程中的区间控制好区间的选取,不要出现重复的区间。
2024-03-20 09:17:11 362 1
原创 代码随想录Day03
这个题第一眼看用的是暴力解法,虽然也能AC,但是还能用更好的KMP方法来解这个题,虽然之前也看过KMP的相关算法,但是到自己操作还是一脸懵,根本理不清头绪,曾经以为自己能把KMP算法模板背下来,但这转头就会忘,所以还得自己脚踏实地的一步一步理解。但是要弄懂KMP算法,一定要清楚以下几点:1.KMP算法主要用在字符串匹配上,当出现字符串不匹配的时候,可以知道前面字符串的匹配情况,避免从头开始。
2024-03-19 09:39:45 1393
原创 代码随想录Day02
这个题目对我来说感觉好难啊,在哈希表的分类里,可是怎么想都想不到解法,三数之和也是,这种题目不适合用哈希方法来解,最好用双指针法来解,也比较容易理解。我看思路里有双指针法以后自己构思题目的解法,也是想到了两个指针,加两层循环,但是这个去重的考虑属实是没想到,我的一跑同样的数据实在是太多了,然后我也是没有剪枝,导致代码运行时间也比较长。本题最重要的就是双指针的思想,两个指针一左一右,用最外层两个for循环,来固定剩余两个数,再就是去重,比较容易忽略,四个指针每一个指针都得去重。
2024-03-15 17:49:01 379
原创 代码随想录Day01
这是一个比较简单的链表题,但我陷入了一个误区,当快指针指向最后一个节点的时候,慢指针指向被删除节点的前一个节点,循环结束后是快指针指向空的时候,才退出循环,如果让快指针先走n步,然后再一块往前走,走到最后的时候慢指针正好指向倒数第n个节点。故先让n走n+1步。第二步:判断循环次数,n/2,当n为偶数的时候正好能循环一圈,当n为奇数的时候,会有一个中心点 res[n/2][n/2] = n ^2。第三步:定义好起点,起点是从左上角开始,也就是(0,0)坐标,定义一个start,每圈循环后加1。
2024-03-14 19:18:07 394
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人