- 博客(306)
- 收藏
- 关注
原创 力扣爆刷第176天之贪心全家桶(共15道题)
首先要做的呢还是按照所有区间的左边界进行排序,之后我们统一维护一个右边界,然后遍历剩余区间,只要当前区间的左边界大于等于维护区间的右边界,那么就是无重叠,直接把维护的右边界替换成当前区间的右边界,但是如果当前区间的左边界小于维护区间的右边界,那么就是重叠了,但是重叠了,是改把维护的区间给区间,还是把当前的区间给去掉,其实很简单,一定要去掉占地面积大的区间,这样才能达到去掉的区间数量最少,所以只需要把维护区间的右边界替换成,这两个右边界的最小值,也就是保留占地范围更小的区间。
2024-09-17 14:53:03
1031
2
原创 力扣爆刷第175天之回溯全家桶(组合、排列、子集、分割、棋盘)
力扣爆刷第175天之回溯全家桶文章目录力扣爆刷第175天之回溯全家桶零、回溯题心法:模板:一、77. 组合二、216. 组合总和 III三、17. 电话号码的字母组合四、39. 组合总和五、40. 组合总和 II六、131. 分割回文串七、93. 复原 IP 地址八、78. 子集九、90. 子集 II十、491. 非递减子序列十一、46. 全排列十二、47. 全排列 II十三、332. 重新安排行程十四、51. N 皇后十五、37. 解数独零、回溯题心法:心法一共分两步,第一步熟背心法,第二步学会分辨
2024-09-05 15:09:46
1090
原创 力扣爆刷第174天之TOP200五连刷136=140(最小k数、字典序、跳跃游戏)
3、如果总数N为21,k为15,以1为前缀下的节点数量只有11个,即1,和10-19.这个数是小于k的,所以要横向遍历,计算前缀为2下面的节点数量。思路:本题求跳跃种数,也就是每次只能跳一步或者两步,其实就是斐波那契数列,这么说就好求了,不要使用递归,递归会有大量的重复计算,可以采用动态规划,用dp数组记录下前两个所依赖的位置,即可。5、那么我们就可以不全部排序,只需要不断的用快排划分区间,一旦划分到了k,就可以返回了,因为划分到了k以后,k左边的都小于它,右边的都大于它。如果是快排,可以利用快排的特性。
2024-08-19 16:19:50
820
原创 力扣爆刷第173天之TOP200五连刷131-135(颜色分类、螺旋矩阵、零钱兑换)
题目链接:https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/description/思路:本题让删除有序数组中的重复项,所有重复的元素只保留一个,最后返回删除后剩余元素的个数,也是很经典的题目了。思路:这道题的意思是有一个数组,数组中只存在0、1、2,让排序,其实思想和今天做的第1题是类似的。1、首先明确一点,有三个数让排序,同时考虑三个数一起操作,是比较复杂的,复杂的问题往往需要分解。这样遍历结束就完成了去重。
2024-08-16 20:54:05
951
原创 八股文学习总结
八股文学习总结一、总体概况二、Java基础三、集合四、JUC五、JVM六、MYSQL七、Redis八、MQ九、计网十、OS十一、附上我记的笔记。
2024-08-13 17:04:03
554
原创 力扣爆刷第172天之TOP200五连刷126-130(逆序对、三数之和、组合总和)
分治区间为nums[left, mid] nums[mid+1, right],合并时,如果是逆序,逆序的个数为 mid - i + 1,所以利用这个特性,直接写归并排序即可。思路:本题让模拟幂函数,可以从快速幂的角度也就是分治的角度来考虑,2的4次方,为2 * 2 = 4,4 * 4= 16,两步就完成了计算,如果遍历计算需要2。解释:交易中的逆序对为 (9, 7), (9, 5), (9, 4), (9, 6), (7, 5), (7, 4), (7, 6), (5, 4)。
2024-08-11 16:55:48
755
1
原创 力扣爆刷第171天之TOP200五连刷121-125(跳跃游戏、买卖股票、旋转链表)
2、对于这个问题,每一天都有两种状态,即持有股票与不持有股票,而持有股票又分为:之前就已经持有了,和今天才持有。1、首先要处理的是k,需要把k限制在链表的总长度之内,可以先遍历一遍链表,然后把k对总长度进行取余,如果为0就不用旋转了,可以直接返回。2、这样就好办了,只需要使用快慢指针,快指针先走k步,然后快慢指针同步向右走,当快指针抵达结尾处,慢指针指向的位置就是倒数第K个节点。思路:本题让把一个链表,奇数升序,偶数降序的链表,给进行排序,返回一个升序链表。2、把降序链表进行翻转,得到升序链表。
2024-08-08 11:06:53
961
原创 力扣爆刷第170天之TOP200五连刷116-120(对角线遍历、完全性检验、循环依赖)
2、观察每一趟遍历,第一趟,x减少,y增加,第二趟,x增加,y减少,这个其实是交替进行的,那么我们可以通过一个标志位flag来控制,让flag=true时,我们就从左下往右上遍历,flag=false时,我们就从右上往左下遍历,由此就可以利用flag,来交换x与y,让x一直减少,让y一直增加,res[k++] = flag?3、采用什么方式遍历呢?解法一:基于拓扑的方式进行遍历,记录所有节点的入度,从入度为0的节点开始遍历,把from节点对应的to节点扣减入度,为0就加入队列,队列遍历完毕就OK了。
2024-08-06 13:29:50
751
2
原创 力扣爆刷第169天之TOP200五连刷111-115(课程表、单词搜索、归并)
因为只要单条链路形成环路即为有环,所以只需要模拟树的遍历,在前序的位置设置标识,在后序的位置移出标识,如果在遍历的过程中,标识被重复遇到了就说明有环路。3、如何防止重复遍历,直接使用一个二维boolean数组是比较浪费空间的,可以对遍历过的节点设置为’0’,递归返回时再修改回原本的值,这样就可以完美解决掉重复遍历的问题。2、其次,要考虑怎么进行单词搜索,可以随着递归维护一个单词读取位置的指针,只要元素相同指针就可以+1,指针只要能够走到结尾部分,就算是搜索结束,搜索到了。3、遍历过程中需要注意哪些问题呢?
2024-08-03 16:46:32
1018
1
原创 力扣爆刷第168天之TOP200五连刷106-110(每日温度单调栈、盛水最多滑动窗口、全排列回溯)
思路:本题求的是随机链表的复制,其实就是把链表复制一份出来,但是要求深拷贝,其实也很简单,需要先把链表next的这一条链给复制一遍,并且在复制的过程中用map进行记录,原链表节点为key,拷贝链表节点为value,这样在复制完next链以后,再遍历一遍原链表的每一个节点的random,就可以利用map找到在拷贝链表中对应的节点。本题是排列,而且有重复元素,不可复选,那么可以排列一下,又因为是排序,不需要指定起始位置,每次递归遍历都是从0开始,所以需要纵向去重,避免单个元素重复使用。①、元素无重,不可复选。
2024-07-30 15:51:43
658
2
原创 力扣爆刷第167天之TOP200五连刷101-105(二叉树序列化、验证IP、LFU)
思路:实现计算器,这也是一个经典题目了,是逐步进阶的,比如只有加减法,有加减乘除,有括号,这是一步一步升级来的,对于只有加减乘除的题来说,使用一个栈来分情况吧数值压入栈中进行处理,需要提前维护一个符号位,是当前数值的前一个符号位,当再次遇到符号时,就是把前一个数压栈的时机,加减就压正负数,乘除需要出栈然后与当前数进行运算再压栈。此外要注意边界条件,如压栈的时机,排除空格以后,只要不是数值就得压栈,如果元素空了抵达字符串尾部了也需要压栈处理了,因为等不到下一个非数值符号了。关键点是对于null节点的记录。
2024-07-23 16:55:32
1155
2
原创 力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组)
思路:要求把相邻的节点两两交换,不能只交换值,其实对于这种交换类型的题目很简单,只需要维护3个或者4个指针,指针①维护要交换的两个节点的前一个节点,这个属于前驱节点,避免断线了,指针②指向第一个要交换的节点,指针③指向第二个要交换的节点,指针②和指针③负责交换节点,指针④用来记录后继节点,所以思路就清晰了,只需要②③节点进行交换,①④维护两个端点,每交换完一组后,指针向后移动就行。题目链接:https://leetcode.cn/problems/word-break/description/
2024-07-20 12:22:16
1074
1
原创 力扣爆刷第165天之TOP100五连刷91-95(岛屿DFS、打家劫舍、堆排)
思路:本题让求最大子数组的乘积,但是数组元素有正有负,这样就有可能出现正数乘着乘着变成负数,负数乘着乘着变成正数的问题,所以为了防止这样的两极问题的出现,可以专门 维护两个数组,一个是最大数值的数组,一个是最小数组的数组,这样对于每一个位置来说既可以只使用当前元素,也可以与前一个位置的最大乘积或者最小乘积相乘,以此进行比较。思路:排列算法有很多,一般掌握快排,堆排,归并。题目链接:https://leetcode.cn/problems/max-area-of-island/description/
2024-07-17 20:47:35
398
原创 力扣爆刷第164天之TOP100五连刷86-90(最大数、不同路径、买卖股票)
思路:s = “3+2*2”,求类似这种的表达式,一般都是依赖于栈,看到题目第一时间要有这个想法,其他的就是只需要维护好一个符号位记录前一个位置的符号,然后用栈来优先处理乘法和除法,遇到加法、减法都先把对应的符合与数先压栈,遇到乘法或除法都出栈进行运算,这样最后栈内只剩下正数和负数。动态规划做法,对于股票买卖类型的题,每一天都有两种状态,即为持有股票或不持有股票,对于持有股票可以是之前就已经持有了,也可以是今天才持有。对于不持有股票,可以是今天才不持有,也可以是之前就已经不持有了。
2024-07-14 15:29:19
966
原创 力扣爆刷第163天之TOP100五连刷81-85(回文链表、路径和、最长重复子数组)
思路:求最长重复子数组,也是很经典的动态规划题目,子数组是连续的,定义dp[i][j]表示以nums1[i]和nums2[j]为结尾的最长重复子数组的长度,根据定义来看,如果nums1[i] == nums2[j] 那么dp[i][j] = dp[i-1][j-1],这是因为如果结尾相等,那么他们的长度自然依赖于上一个状态,如果不等自然是0。题目链接:https://leetcode.cn/problems/maximum-width-of-binary-tree/description/
2024-07-11 16:10:04
588
原创 力扣爆刷第162天之TOP100五连刷76-80(最小路径和、最长公共前缀、最长连续序列)
如果为1,2,1,那么此处为1+1.思路:每次只能向下或向右移动一步,求最小路径和,很经典的一道动态规划题,定义dp[i][j]表示,抵达nums[i][j]时的最小路径和,那么根据定义,要想抵达nums[i][j]这个位置,就得从nums[i-1][j]或者nums[i][j-1]的位置出发,而这两个位置对应的最小路径和即为dp[i-1][j]或者dp[i][j-1],故而dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + nums[i][j]。
2024-07-10 13:28:03
779
原创 力扣爆刷第161天之TOP100五连刷71-75(搜索二叉树、二维矩阵、路径总和)
题目链接:https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/description/思路:求排序数组中目标元素出现的最左位置和最右位置,其实就是采用二分查找,分开查找,先查找左边界再查找右边界。然后注意边界条件,即元素是否存在,查出来的边是否超界。
2024-07-08 16:08:51
996
原创 力扣爆刷第160天之TOP100五连刷66-70(回溯、旋转图像、技巧题)
构造1/2:要最求尽可能的是1/2,一般来说,范围够大就行,用while循环产生数,只要大于6就一直循环,那么退出while循环时,出来的数只能是1-6,3个奇数,3个偶数,那么判断是奇数还是偶数就构造了1/2.思路:求二叉树的直径,说的是可能过根节点,也可能不过,其实最大直径求的就是每一个节点的左右子树高度和,那么就简单了,就是求树的高度,然后加和左右子树高度,然后记录即可。思路:本题让用产生1-7的随机数函数,构造产生1-10随机数的函数,其实很构造,只需要1/2 * 1/5即可。
2024-07-07 13:21:01
829
原创 力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)
思路:很经典的题目,翻转字符串中的单词,只需要把所有单词都翻转,然后再整体翻转就可以。思路:本题怎么都可以做,求的是从根节点到叶子节点的每一条通路都是一个数,这个数是从根节点拼接到叶子节点的。题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/description/
2024-07-05 20:24:22
1161
原创 力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号)
思路:字符串相乘,首先确定拼接方法,采用数组拼接,方便计算,长度的话,两个字符串长度相加的长度正好覆盖最大乘积,至于进位如何计算,因为每次相乘都是个位数进行相乘,结果不会超过两位,所以维护两位的窗口,后一位用来累加进位,前一位作为进位。思路:求最小栈,要求为就是一个正常的栈先进后出,然后可以常数时间获取最小值,其实只需要维护两个栈,一个栈正常入栈出栈,另一个栈是最小值,当前元素小于栈顶时才入栈,否则把栈顶元素重复入栈。而且元素无重不需要去重。
2024-07-03 15:50:53
435
原创 力扣爆刷第1567之TOP100五连刷51-55(滑动窗口、零钱兑换、最小覆盖子串)
思路:求缺失的第一个正数,要求时间复杂度o(n),本身不能排序,但是可以借助数组的索引来做一个映射关系,对于如何求缺失的第一个正数,对于固定长度的数组来说,如果数组中的元素值存在超出数组长度的情况,那么数组中就一定在[1, len]不是连续的,那么我们只需要把超出范围的给排除掉,然后把位于范围内的与数组的索引进行映射,但凡能映射上的,也给进行区别标识,比如设置为负数,然后再从头到尾遍历,第一个大于0的元素所对应的索引就是缺失的第一个正数。
2024-07-01 12:30:15
537
原创 力扣爆刷第156天之TOP100五连刷46-50(字符串转整数、括号生成、两数相加)
思路:本题是把字符串转成整数,然后按照取出前置空格,前置0,的方式,只要读取了数字,后面遇到非数字部分直接返回,所以要从前往后逐步进行操作,首先就是取出前置空格,然后判断符号位,然后进入数字拼接部分,然后此处要注意是否超出界限。思路:比较版本号,其实就是数字比较,但是关键点在于,两个字符串中的每一组数字如何比较,其实就是用“.”来划分数字,两个字符串,一个一个来,第一个字符串计算出一个数字,然后等第二个计算,计算完再比较,然后再进入下一轮。
2024-06-28 13:50:37
470
原创 力扣爆刷第155天之TOP100五连刷41-45(下一个排列、正序数组中位数、归并排序链表)
思路:求下一个排列,本意就是字典序,举个例子,如果1、6、5、4、3、2的下个排列就是2、1、3、4、5、6,如果是3、2、1那么下一个排序是1、2、3,这类题目要结合图像来做,所以可以看的出来,要找的是一个转折点,从右向左寻找第一个凸起点,然后把凸起点右边的第一个大于凸起点左边的值进行交换,然后把凸起点开始到结尾的元素都翻转即可。题目链接:https://leetcode.cn/problems/median-of-two-sorted-arrays/description/从下面这个图好好体会。
2024-06-27 12:16:09
363
原创 力扣爆刷第154天之TOP100五连刷36-40(最长公共子序列、二分、二叉树右视图)
text2[j],结尾处不相等就退而求其次,要么是text1退一步,要么是text2退一步,但不管谁退,都应该保留下最长的公共子序列,即dp[i][j] = max(dp[i-1][j], dp[i][j-1])。那么,如果text1[i] == text2[j],长度就依赖于text1[i-1]和text2[j-1]的状态,即dp[i][j] = dp[i-1][j-1]+1.题目链接:https://leetcode.cn/problems/binary-search/description/
2024-06-25 15:27:57
380
原创 力扣爆刷第153天之TOP100五连刷31-35(合并区间、编辑距离、复原IP)
其实,如果text1[i] == text2[j]那么dp[i][j]其实是依赖于上一个位置的操作数,即text1[i-1]和text2[j-1]的操作数,即dp[i][j] = dp[i-1][j-1]+1。替换:对于替换,只是把text1[i]或者text2[j]进行了替换,这算一步,其他的依赖于前一个步骤的操作数,即dp[i][j] = dp[i-1][j-1]+1.删除:假如对text1删除,其实是依赖于text1[i-1]的位置,即dp[i][j] = dp[i-1][j]+1.
2024-06-23 21:01:05
793
原创 力扣爆刷第153天之TOP100五连刷26-30(接雨水、环形链表、最长上升子序列)
只需要用单调栈构建出来一个凹槽即可,即当前元素小于等于栈顶元素即入栈,大于栈顶元素则出栈,出栈出来的就是凹槽的底部,当前元素是凹槽的右边,现在的栈顶是凹槽的左边,这样就可以计算凹槽的长和宽,进行面积计算。思路:字符串相加这也是非常经典的题目,主要是边界条件的控制,利用 || 或条件不全为0的情况下,不会推出循环,来完成不等长字符串的相加,以及进位的相加。思路:求环形链表的入口也是一道经典的题目,快慢指针如果相遇则说明有环,然后两个指针一个从头结点出发,一个从相遇节点出发,再次相遇,即为环的入口。
2024-06-21 10:43:49
510
原创 力扣爆刷第153天之TOP100五连刷21-25(相交、翻转、排序链表、螺旋矩阵、锯齿二叉树)
思路:本题很有意思,要求层序遍历,但是需要从左往右,再从右往左,以此往复。但本质上还是层序遍历,所以不要想复杂了,我们要维持层序遍历的框架不要动,正常的使用层序遍历,但是在出队收集元素时,使用一个双向队列来收集,按照偶数层和奇数层分别从右边添加进入队列和从左边添加进入队列。思路:在指定区间内进行翻转,翻转的话可以使用头插法或者尾插法,都可以,我这里使用头插法,但是需要实现记录下来,要进行翻转的节点的前一个节点,这个是作为头,要翻转的节点中的第一个节点,这个作为拼接使用的尾,把握住这两个点,即可进行翻转。
2024-06-18 20:05:19
487
原创 力扣爆刷第152天之TOP100五连刷16-20(买卖股票、回溯、公共祖先、环形链表)
思路:经典题目,求二叉树的最近公共祖先,因为是求父节点,所以得通过子节点来确认,故需要使用后序遍历,通过递归的返回拿到子节点的信息。动态规划:动态规划就是状态与选择,每一天都有两种状态,即持有股票和不持有股票,而持有股票又分为之前就持有和今天才持有,不持有股票也分为之前就不持有和今天才不持有。求排列的话,递归不需要起始位置,但是需要避免同一个元素纵向重复使用,故使用一个标记数组,递归进入标记,递归返回清楚,故只影响纵向,不影响横向。思路:归并排序,没啥好说的,如果不想使用新数组,可以从大到小进行归并。
2024-06-18 09:25:29
504
原创 力扣爆刷第151天之TOP100五连刷11-15(回文子串、DFS、旋转数组二分查找)
思路:题目的意思是把数组从中间任意一个位置截取然后左右互换来形成旋转,其实只要是细心一些就会发现,无论这种选择操作进行多少次,最后都是一个形状,也就是如下的形状,题目要求时间复杂度log(n),显然二分查找,非递增怎么进行二分查找呢?其实很简单,一样是计算中值,只不过之前是计算中值之后和target进行比较,来判断target位于哪一个区间,现在依然要进行这一步,却需要先用中值与左边界进行比较,可以得到点位①和点位②是情况。由此即可实现层序遍历,其中关键点就是每一层的节点数量,这个是由根节点启动的。
2024-06-16 16:02:27
870
原创 力扣爆刷第150天之TOP100五连刷6-10(几数之和、堆排、合并链表)
三数之和,三个数,第一个数单独拿出来,然后剩下的两个数在一块,这就又形成了两数之和了。首先给整个数组排序,第一个数固定不动,看看剩下两个数加一块的三数之和,如果大于0说第三个数大了,要左移,如果小于0说明第二哥数小了,要右移。思路:本题可以用贪心,也可以用动规,如果使用贪心的话,因为求的是最大连续子数组的和,所以只要子数组的和大于0我们就不停的记录最大值,如果子数组的和小于0了,那么就重新开始。思路:经典的两数之和、三数之和,两数之和使用map,三数之和需要考虑的是去重和早停。
2024-06-12 20:43:03
445
原创 力扣爆刷第149天之TOP100五连刷1-5(LRU、K个一组)
思路:K个一组翻转链表,给链表加上虚拟头结点,然后每K个一组进行翻转,具体采用头插法或者尾插法都可以,本题我采用头插法,如果采用头插法需要在知道头和尾的情况下进行,头是不动的,属于需要翻转的k个节点的前一个,尾也也是不动的,是需要翻转的k个节点的下一个。思路:LRU经典题目,最近最少使用,内部结构是map和双向链表,每次访问之后的节点都会移动到链表尾部,往链表里添加元素数量超过容量以后,会删除最久未访问的,就是删除链表的首部,由此便理解了LRU该如果设计。思路:经典翻转链表,头插法、尾插法任军选择。
2024-06-12 09:03:40
902
1
原创 力扣爆刷第148天之贪心算法五连刷(区间合并)
求把多个区间去掉最少区间成为无重叠区间,首先先把所有的区间按照左边界排序,然后维护一个区间进行比较,如果当前区间的左边界位于其中,说明区间重叠了,是需要计数的,作为去掉一个区间,然后右边界改成相交的两个区间的最小的右边界,这样可以尽最大努力避免区间重叠,如果当前区间的左边界位于维护区间的右边界之外,则说明无重叠区间,又因为都是按照左边界排序的,只需要把右边界改成最右边的边界即可。题目链接:https://leetcode.cn/problems/partition-labels/description/
2024-06-06 14:41:32
914
原创 力扣爆刷第147天之贪心算法五连刷(跳跃、发糖果、加油站)
思路:本题本质上是让把负数的部分先翻转,来消耗K,如果k没有被消耗完,就会出现两种情况,要么全为负数,要么负数消耗完了,如果全为负数,则只需要把剩余的k用在最后一个元素上,如果是负数消耗完了,则需要以0为界限,相邻的两个数的绝对值的最小值,来作为消耗值。思路:本题求的是跳跃的最少次数,要想求最少次数当然是在每一个跳跃区间内寻找最远的下一跳,这样每次走完当前区间,要进行下一跳时,选择距离最远的选择进行跳跃,并且记录下跳跃次数,本质上是不断更新最远区间的过程,只不过更新时选择最远的进行更新。
2024-06-03 10:07:37
519
原创 力扣爆刷第145天之图论五连刷(dfs和bfs)
dfs是一条路走到底,类似于树的遍历,即一直递归,直至终点。bfs是一圈一圈的往外遍历,类似于树的水平遍历,一般使用队列来做。(bfs适合来求两点之间的最短路径)。
2024-05-27 20:53:31
541
原创 力扣爆刷第144天之二叉树四连刷(完结二叉搜索树改变树结构)
思路:删除二叉搜索树中的节点,这种改变树结构类型的题目,一定都是在树的遍历过程中,构造树,这个是一个解题的模板,也就是递归函数的返回值要作为父节点的左孩子或者右孩子。在遍历的过程中构建树,如果当前节点不在范围内,则直接返回子树结果(就是在结果树中剔除了当前节点),如果当前结果在范围内,则构建树,即用root的左右孩子接收递归寻找结果。思路:让把二叉搜索树改成累加树,累加树的要求是新节点为原节点加上比它大的所有节点,所以利用中序遍历的特性,采用右,中,左的方式进行遍历累加即可。
2024-05-26 17:26:46
508
原创 力扣爆刷第143天之二叉树五连刷(二叉搜索树)
思路:求最近公共祖先,非常简单,因为要求祖先,所以使用后续遍历,后续遍历,可以拿到左右子树的遍历结果,只需要比较当前节点是否是q或者p,是的话就返回。思路:求二叉搜索树的最近公共祖先,需要利用二叉搜索树的特性,从上往下进行搜索,通过全部大于或者全部小于决定递归方向,一旦当前节点的大小介于q和p之间,则该节点一定是最近公共祖先。思路:本题记录众数需要中序遍历二叉搜索树,利用递增的特性,方便统计,统计时,前后元素不等置1,相等累加,如果数值大于最大值,则情况记录数组,如果等于则添加。这样是符合众数的定义的。
2024-05-24 23:28:39
346
原创 力扣爆刷第142天之二叉树五连刷(构造树、搜索树)
题目链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/题目链接:https://leetcode.cn/problems/search-in-a-binary-search-tree/description/题目链接:https://leetcode.cn/problems/merge-two-binary-trees/description/
2024-05-23 22:46:56
598
原创 力扣爆刷第141天之二叉树十连刷(翻转、对称、深度、平衡、路径)
思路:本题和上一题略有差异,上一题是求所有左叶子节点的和,要求的是左叶子节点,本题类似于树的左视图,但是是深度最深的哪一行的最左边的那个节点,它可能是左节点也可能是右节点。只需要前序遍历,利用深度,当深度第一次大于记录值时,说明是第一次到达下一层,而且采用的是前序遍历,到达的是下一层的最左边的叶子节点。思路:求左叶子之和,求的是所有的左叶子的和,所以只需要做两件事情,一件是在叶子节点进行判断,另外一件是提供每个节点的信息,用于判断当前节点是否是叶子节点,这种信息需要从父节点传递,所以在递归函数的参数中。
2024-05-22 21:51:52
833
原创 力扣爆刷第141天之二叉树十连刷(层序遍历)
题目链接:https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/description/题目链接:https://leetcode.cn/problems/find-largest-value-in-each-tree-row/description/思路:N叉树的层序遍历,比二叉树来说,只是多了几个叉,不需要在直接写左右子树了,直接一个for循环,把子节点全遍历出来。思路:层序遍历,使用队列完成,经典题目。
2024-05-20 23:07:21
990
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人