- 博客(20)
- 收藏
- 关注
原创 代码随想录打卡DAY23
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串。返回 s 所有可能的分割方案。注意:解集不能包含重复的组合。
2024-11-29 00:26:59
989
原创 代码随想录打卡DAY21
输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]
2024-11-28 00:09:15
1815
原创 代码随想录打卡DAY20
每次递归返回的根节点会更新其父节点的。),我们就创建一个新的节点并返回它。包含了所有出现次数最多的值。指针,从而维持树的结构。:如果当前节点为空 (
2024-11-27 23:26:56
825
原创 代码随想录打卡DAY17
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null。输入:root = [4,2,7,1,3], val = 2输出:[2,1,3]
2024-11-24 23:54:49
951
原创 代码随想录打卡DAY15
比较简单,只要子树存在就递归+1;而遍历法使用层序遍历即可。平衡二叉树需要左右子树的深度的差值小于等于1,因此需要获取子树的深度,直接将获取子树最大深度改写,获取玩左右子树后比较,若返回值为-1,则不平衡。保留着到叶子节点的每一个节点路径,当递归至叶子节点时,将所有节点打印,放到result中,此时,回溯至该节点最初节点。也就是这一步。这样递归至每一个叶子节点也就完成了所有的路径。只要满足该子树的左子树是一个叶子节点,那么就找到了一个左叶子,虽有相加即可。
2024-11-24 22:55:01
712
原创 代码随想录打卡DAY12
只需要确定好递归的退出条件,递归的内容即可。每次对比都用左子树内侧与右子树的内侧对比,也就是左子树的左子树和右子树的右子树对比。通过递归对比左右子树的深度返回即可。特别注意,当一个一个节点无左子树,而又右子树时,它并不是一个最小深度,最小深度必须是一个叶子结点所在的层数。
2024-11-01 23:11:12
675
原创 代码随想录打卡DAY11
三道题基本一样,只需要确定好一个递归的顺序就可以。而在遍历法中,需要分析清楚如何入栈与出栈。每次经过一个for循环就会遍历一层,所以只需要再循环式将所有节点放入队列中即可。
2024-11-01 22:55:32
946
原创 代码随想录打卡Day10
与前一篇的消除相邻的相同元素那一道题相似,只不过把消除换成了计算,需要注意每次计算完将结果放入栈中。这道题听了好久才听懂,写起代码来也很麻烦,希望下次再刷能够效果好一些。使用小顶堆而不是大顶堆在于大顶堆每次向堆内添加数据时,会将top元素移除,而我们堆内正是要存储最大元素。
2024-10-31 23:01:53
608
原创 代码随想录打卡Day9
检测到左括号而添加右括号这一步真的很难想到,这能有效的提高代码的简洁度。通过利用栈的特性,能够时刻与最相邻的元素做对比,依次压入栈中并将所有相邻且相同的元素做对比。最后呢要把栈里的内容放入字符串中,几下栈的长度,反方向往里存,这样更方便。
2024-10-30 00:16:05
739
原创 代码随想录打卡Day8
用了不少时间,最后在处理空格的时候难住了,想到了,但写不出来。和上一题很相似,这一题可以看作在上一题中只有两个单词并且没有空格。看视频讲解的时候还挺清晰,自己写的时候越写越迷糊,希望下次再写的时候可以清晰一些。
2024-10-28 20:59:27
577
原创 代码随想录Day6
将a+b+c+d=0的问题改为a+b=-(c+d),这样能够大大减少复杂度。直接用数组两次循环便可以解决时间复杂度也只需要O(m+n);如果使用哈希表则需要浪费更多空间;这种思想还是比较难想到的,对于left和right的寻找有点像时间窗口。大致想法有了之后,细节上的处理也很难,尤其是对于边界值处理,还有重复值的去重,这一步很重要并且和会有完全不同的结果,前者会在找到一组值之后,对于下一组重复值不处理,直接跳过。尽管已经知道再加一层循环就可以,但再细节处理上仍然有多处的bug。
2024-10-25 18:18:52
888
原创 代码随想录打卡Day5
构造的哈希集合 nums_set这一步能够自动去重,还并没有用过。如果使用两个数组的话得需要O(n2)时间复杂度。通过哈希集合来去重和加速查找,使得判断两个数组的交集变得更加高效,时间复杂度为O(m+n)。开始想法就是构造循环检测是否sum的值是否为1,但是忘记了sum的值会可能不等于1,导致无法出循环。由于边学c++边学习代码,所以理解可能不太难,但实现有点麻烦了。
2024-10-22 16:38:17
830
原创 代码随想录Day4
第一次写时,只顾着将每两个节点交换,忘记了此前的节点和这一组节点的链接。每一个节点的交换,都要记住前一节点的next域要修改。在快慢指针上使用不到位,并不能想到快指针先移动n个节点。以前做过,但仍然忘记了。这一道题的思路与上一题找到倒数第n个节点有点相似,需要注意不要指针地址越界。并且在经过一遍循环后要将两个指针重新恢复到头结点。自己做这道题只能做到判断是否链表存在环,下一步的找环入口的位置可以说完全想不到。这道题也是收获很大。
2024-10-21 19:38:39
1648
原创 代码随想录打卡Day3
该题需要多考虑若某个节点为空的情况。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]不难,只需要注意节点间交换的次序就好。
2024-10-19 14:38:56
2063
原创 代码随想录打卡Day2
并不容易,废了一会功夫。首先初值设置问题,开始设置为0,后设置为数组长度,最后才设置为数组长度+1;其次循环跳出没有把握好,这种情况在包含了最后一个数据的滑动窗口时,无法正确获取。代码简洁性没有很好的考虑,如返回值处。这道题产生了一些困扰,尤其是在边界部分,我认为自己并没有很好的掌握左闭右开的这样一个原则。
2024-10-18 18:26:06
820
原创 代码随想录打卡Day1
这一题较为简单,学过数据结构基本都能写出来,但在部分区间上可能要做修改。在数据结构中见过这样的题,有印象,所以基本很快就做了出来。·第一时间没有想到使用快慢指针这一思想,而是在想如何排序得到最后结果。
2024-10-16 21:02:03
856
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人