自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(168)
  • 收藏
  • 关注

原创 代码随想录算法训练营总结

又一次刷完代码随想录,有些知识点逐渐变得清晰,再做一些新题的时候,也逐渐有了一些思路。接下来要继续努力,争取在秋招的时候,拿一个好offer!

2024-04-22 14:02:24 404

原创 代码随想录算法训练营三刷day60 | 单调栈 之 84.柱状图中最大的矩形

三刷day6084.柱状图中最大的矩形84.柱状图中最大的矩形题目链接解题思路:本地单调栈的解法和接雨水的题目是遥相呼应的。42. 接雨水是找每个柱子左右两边第一个大于该柱子高度的柱子,而本题是找每个柱子左右两边第一个小于该柱子的柱子。这里就涉及到了单调栈很重要的性质,就是单调栈里的顺序,是从小到大还是从大到小。在题解42. 接雨水 中接雨水的单调栈从栈头(元素从栈头弹出)到栈底的顺序应该是从小到大的顺序。那么因为本题是要找每个柱子左右两边第一个小于该柱子的柱子,所以从栈头(元素从栈头弹出)

2024-04-20 13:32:49 439

原创 代码随想录算法训练营三刷day59 | 单调栈之 503.下一个更大元素II 42. 接雨水

因为一旦发现添加的柱子高度大于栈头元素了,此时就出现凹槽了,栈头元素就是凹槽底部的柱子,栈头第二个元素就是凹槽左边的柱子,而添加的元素就是凹槽右边的柱子。如果当前遍历的元素(柱子)高度等于栈顶元素的高度,要跟更新栈顶元素,因为遇到相相同高度的柱子,需要使用最右边的柱子来计算宽度。如果当前遍历的元素(柱子)高度小于栈顶元素的高度,就把这个元素加入栈中,因为栈里本来就要保持从小到大的顺序(从栈头到栈底)。当前遍历的元素i,就是凹槽右边的位置,下标为i,对应的高度为height[i](就是图中的高度3)。

2024-04-20 13:30:45 971

原创 代码随想录算法训练营三刷day58 | 单调栈之 739. 每日温度 496.下一个更大元素 I

更直白来说,就是用一个栈来记录我们遍历过的元素,因为我们遍历数组的时候,我们不知道之前都遍历了哪些元素,以至于遍历一个元素找不到是不是之前遍历过一个更小的,所以我们需要用一个容器(这里用单调栈)来记录我们遍历过的元素。通过以上过程,大家可以自己再模拟一遍,就会发现:只有单调栈递增(从栈口到栈底顺序),就是求右边第一个比自己大的,单调栈递减的话,就是求右边第一个比自己小的。即:如果求一个元素右边第一个更大元素,单调栈就是递增的,如果求一个元素右边第一个更小元素,单调栈就是递减的。

2024-04-18 16:21:39 623

原创 代码随想录算法训练营三刷 day57 | 动态规划之 647. 回文子串 516.最长回文子序列

题目链接解题思路:动规五部曲:如果大家做了很多这种子序列相关的题目,在定义dp数组的时候 很自然就会想题目求什么,我们就如何定义dp数组。绝大多数题目确实是这样,不过本题如果我们定义, 为 下标i结尾的字符串有 dp[i]个回文串的话,我们会发现很难找到递归关系。 和 , 看上去都没啥关系。所以我们要看回文串的性质。 如图:我们在判断字符串S是否是回文,那么如果我们知道 ,, 这个子串是回文的,那么只需要比较 和这两个元素是否相同,如果相同的话,这个字符串s 就是回文串。那么此时我们是不是能找到一种

2024-04-17 21:38:51 558

原创 代码随想录算法训练营三刷day56 | 动态规划之 583. 两个字符串的删除操作 72. 编辑距离

所以遍历的时候一定是从上到下,从左到右,这样保证dp[i][j]可以根据之前计算出来的数值进行计算。为结尾的字符串word1要删除多少个元素,才能和word2相同呢,很明显。位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。为结尾的字符串word1,和空字符串word2,最近编辑距离为。word2添加一个元素,相当于word1删除一个元素,例如。,是不是就达到两个元素都删除的效果,即。为结尾的字符串word2,最近编辑距离为。为结尾的字符串word2,最近编辑距离为。

2024-04-16 19:55:34 591

原创 代码随想录算法训练营三刷day55 | 动态规划之子序列 392.判断子序列 115.不同的子序列

例如: s:bagg 和 t:bag ,s[3] 和 t[2]是相同的,但是字符串s也可以不用s[3]来匹配,即用s[0]s[1]s[2]组成的bag。与 字符串s的长度相同说明:s与t的最长相同子序列就是s,那么s 就是 t 的子序列。是以下标i为结尾的字符串s和以下标j为结尾的字符串t,初始化就比较麻烦了。表示以下标i-1为结尾的字符串,与空字符串的相同子序列长度,所以为。:空字符串s可以随便删除元素,出现以j-1为结尾的字符串t的个数。为结尾的s,删除所有元素,出现空字符串的个数就是1。

2024-04-15 15:05:48 992

原创 代码随想录算法训练营三刷day53 | 动态规划之子序列 1143.最长公共子序列 1035.不相交的线 53. 最大子序和

题目链接解题思路: 动规五部曲分析如下::长度为的字符串text1与长度为的字符串text2的最长公共子序列为主要就是两大情况: 与 相同, 与 不相同如果 与 相同,那么找到了一个公共元素,所以;如果 与 不相同,那就看看与的最长公共子序列 和 与的最长公共子序列,取最大的。即:代码如下:3.dp数组如何初始化先看看应该是多少呢?和空串的最长公共子序列自然是0,所以;同理也是0。其他下标都是随着递推公式逐步覆盖,初始为多少都可以,那么就统一初始为0。代码:4.确定遍历顺序从递推公式,可以看出,

2024-04-14 10:41:09 556

原创 代码随想录算法训练营三刷day52 | 动态规划之子序列 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度为什么一定表示 “以nums[i]结尾的最长递增子序” ,因为我们在做递增比较的时候,如果比较nums[j]和nums[i]的大小,那么两个递增子序列一定分别以nums[j]为结尾 和nums[i]为结尾, 要不然这个比较就没有意义了,不是尾部元素的比较那么 如何算递增呢。

2024-04-12 16:19:53 358

原创 代码随想录算法训练营三刷day51 | 动态规划 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

保持卖出股票状态(状态二),这里其实从 「状态二」的定义来说 ,很难明确应该初始多少,这种情况我们就看递推公式需要我们给他初始成什么数值。(即第0天的状态二)应该初始成多少,只能初始为0。最后结果是取 状态二,状态三,和状态四的最大值,不少同学会把状态四忘了,状态四是冷冻期,最后一天如果是冷冻期也可能是最大值。出现冷冻期之后,状态其实是比较复杂度,例如今天买入股票、今天卖出股票、今天是冷冻期,都是不能操作股票的。昨天一定是持有股票状态(状态一),今天卖出。今天卖出了股票(状态三),同上分析,

2024-04-11 15:31:10 618

原创 代码随想录算法训练营三刷 day50 | 动态规划 之 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

第二次买入依赖于第一次卖出的状态,其实相当于第0天第一次买入了,第一次卖出了,然后再买入一次(第二次买入),那么现在手头上没有现金,只要买入,现金就做相应的减少。第二次买入依赖于第一次卖出的状态,其实相当于第0天第一次买入了,第一次卖出了,然后在买入一次(第二次买入),那么现在手头上没有现金,只要买入,现金就做相应的减少。此时还没有买入,怎么就卖出呢?,表示的是第i天,买入股票的状态,并不是说一定要第i天买入股票,这是很多同学容易陷入的误区。,表示的是第i天,买入股票的状态,并不是说一定要第i天买入股票。

2024-04-10 20:58:52 289

原创 代码随想录算法训练营三刷 day49 | 动态规划 之121 买卖股票的最佳时机 122 买卖股票的最佳时机II

表示第i天持有股票所得最多现金 ,这里可能有同学疑惑,本题中只能买卖一次,持有股票之后哪还有现金呢?注意这里说的是“持有”,“持有”不代表就是当天“买入”!也有可能是昨天就买入了,今天保持持有的状态。的唯一区别是本题股票可以买卖多次了(注意只有一只股票,所以再次购买前要出售掉之前的股票)表示第0天持有股票,此时的持有股票就一定是买入股票了,因为不可能有前一天推出来,所以。其实一开始现金是0,那么加入第i天买入股票现金就是。表示第0天不持有股票,不持有股票那么现金就是0,所以。应该选所得现金最大的,所以。

2024-04-09 21:54:02 448

原创 代码随想录算法训练营三刷 day48 |动态规划之 198打家劫舍 213打家劫舍II 337打家劫舍III

题目链接解题思路: 当前状态和前面状态会有一种依赖关系,那么这种依赖关系都是动规的递推公式。动规五部曲分析如下::考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为。决定的因素就是第i房间偷还是不偷。如果偷第i房间,那么 ,即:第房一定是不考虑的,找出下标(包括i-2)以内的房屋,最多可以偷窃的金额为 加上第i房间偷到的钱。如果不偷第i房间,那么,即考 虑房,(注意这里是考虑,并不是一定要偷i-1房,这是容易混淆的点)然后取最大值,即;从递推公式;可以看出,递推公式的基础就是 和 从的定义上来讲, 一

2024-04-08 21:47:21 835

原创 代码随想录算法训练营三刷day46 | 动态规划之139.单词拆分

apple”, “pen” 是物品,那么我们要求 物品的组合一定是 “apple” + “pen” + “apple” 才能组成 “applepenapple”。“apple” + “apple” + “pen” 或者 “pen” + “apple” + “apple” 是不可以的,那么我们就是强调物品之间顺序。而本题其实我们求的是排列数,为什么呢。解题思路:单词就是物品,字符串s就是背包,单词能否组成字符串s,就是问物品能不能把背包装满。题目中说是拆分为一个或多个在字典中出现的单词,所以这是完全背包。

2024-04-06 19:19:15 814

原创 代码随想录算法训练营三刷 day45 | 动态规划 之 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

所以本题的两个for循环的关系是:外层for循环遍历物品,内层for遍历背包或者外层for遍历背包,内层for循环遍历物品都是可以的!都要选最小的,所以非0下标的dp[j]一定要初始为最大值,这样dp[j]在递推的时候才不会被初始值覆盖。所以本题外层for遍历背包,内层for遍历物品,还是外层for遍历物品,内层for遍历背包,都是可以的!解题思路:完全平方数就是物品(可以无限件使用),凑个正整数n就是背包,问凑满这个背包最少有多少物品。表示 和为0的完全平方数的最小数量,那么dp[0]一定是0。

2024-04-06 19:15:53 1980

原创 代码随想录算法训练营三刷day44 | 动态规划之 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

本题中我们是外层for循环遍历物品(钱币),内层for遍历背包(金钱总额),还是外层for遍历背包(金钱总额),内层for循环遍历物品(钱币)呢?在上面的讲解中完全背包的两个for循环的先后顺序都是可以的。因为纯完全背包求得装满背包的最大价值是多少,和凑成总和的元素有没有顺序没关系,即:有顺序也行,没有顺序也行!纯完全背包是凑成背包最大价值是多少,而本题是要求凑成总金额的物品组合个数!本题要求的是排列,那么这个for循环嵌套的顺序可以有说法了。背包容量的每一个值,都是经过 1 和 5 的计算,包含了。

2024-04-03 18:44:16 753

原创 代码随想录算法训练营三刷day43 | 动态规划之1049. 最后一块石头的重量 II 494. 目标和 474.一和零

题目链接本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。本题物品的重量为stones[i],物品的价值也为stones[i]。对应着01背包里的物品重量weight[i]和 物品价值value[i]。

2024-04-03 18:41:52 876

原创 代码随想录算法训练营三刷day42 | 动态规划之背包问题 416. 分割等和子集

那么如果背包容量为target, dp[target]就是装满 背包之后的重量,所以 当 dp[target] == target 的时候,背包就装满了。01背包的递推公式为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);套到本题,dp[j]表示 背包总容量(所能装的总重量)是j,放进物品后,背的最大重量为dp[j]。01背包中,dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。从dp[j]的定义来看,首先dp[0]一定是0。

2024-04-02 21:52:03 725

原创 代码随想录算法训练营三刷day41 | 动态规划之 343. 整数拆分 96.不同的二叉搜索树

从递归公式上来讲,dp[以j为头结点左子树节点数量] * dp[以j为头结点右子树节点数量] 中以j为头结点左子树节点数量为0,也需要dp[以j为头结点左子树节点数量] = 1, 否则乘法的结果就都变成0了。j的结束条件是 j < i - 1 ,其实 j < i 也是可以的,不过可以节省一步,例如让j = i - 1,的话,其实在 j = 1的时候,这一步就已经拆出来了,重复计算,所以 j < i - 1。,就是 元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量。

2024-04-01 20:51:08 586

原创 代码随想录算法训练营三刷day39 |动态规划 之 62.不同路径 63. 不同路径II

因为从(0, 0)的位置到(i, 0)的路径只有一条,所以dp[i][0]一定为1,dp[0][j]也同理。表示啥,是从(0, 0)的位置到(i - 1, j)有几条路径,dp[i][j - 1]同理。一定都是1,因为从(0, 0)的位置到(i, 0)的路径只有一条,那么dp[0][j]也同理。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。:表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。,因为dp[i][j]只有这两个方向过来。

2024-03-30 09:47:20 1189

原创 代码随想录算法训练营三刷 day38 | 动态规划之 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

中可以看出,遍历顺序一定是从前向后遍历的。当n为5的时候,dp table(dp数组)应该是这样的。的定义:到达第i台阶所花费的最少体力为。的定义为:第i个数的斐波那契数值是。,那么遍历的顺序一定是。: 爬到第i层楼梯,有。解题思路:动规五部曲。

2024-03-30 09:45:35 329

原创 代码随想录算法训练营三刷day37 | 贪心 之 738.单调递增的数字 968.监控二叉树

那么空节点不能是无覆盖的状态,这样叶子节点就要放摄像头了,空节点也不能是有摄像头的状态,这样叶子节点的父节点就没有必要放摄像头了,而是可以把摄像头放在叶子节点的爷爷节点上。这么说有点抽象,举个例子,数字:332,从前向后遍历的话,那么就把变成了329,此时2又小于了第一位的3了,真正的结果应该是299。此时需要状态转移的公式,大家不要和动态的状态转移公式混到一起,本题状态转移没有择优的过程,就是单纯的状态转移!如果是以下情况,其实就是 左右孩子节点有一个有摄像头了,那么其父节点就应该是2(覆盖的状态)

2024-03-28 20:48:22 590

原创 代码随想录算法训练营三刷day36 | 贪心重叠区间之 435. 无重叠区间 763.划分字母区间 56. 合并区间

此时问题就是要求非交叉区间的最大个数。这里记录非交叉区间的个数还是有技巧的,如图:

2024-03-27 21:52:27 343

原创 代码随想录算法训练营三刷day35 |贪心 之 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

可以看出首先第一组重叠气球,一定是需要一个箭,气球3,的左边界大于了 第一组重叠气球的最小右边界,所以再需要一支箭来射气球3了。如果按照k来从小到大排序,排完之后,会发现k的排列并不符合条件,身高也不符合条件,两个维度哪一个都没确定下来。以题目示例: [[10,16],[2,8],[1,6],[7,12]]为例,如图:(方便起见,已经排序)那么按照身高h来排序呢,身高一定是从大到小排(身高相同的话则k小的站前面),让高个子在前面。局部最优:遇到账单20,优先消耗美元10,完成本次找零。

2024-03-26 21:38:28 322

原创 代码随想录算法训练营三刷 day34 | 贪心之1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

如果 ratings[i] > ratings[i + 1],此时candyVec[i](第i个小孩的糖果数量)就有两个选择了,一个是candyVec[i + 1] + 1(从右边这个加1得到的糖果数量),一个是candyVec[i](之前比较右孩子大于左孩子得到的糖果数量)。那么又要贪心了,局部最优:取candyVec[i + 1] + 1 和 candyVec[i] 最大的糖果数量,保证第i个小孩的糖果数量既大于左边的也大于右边的。全局最优:相邻的孩子中,评分高的孩子获得更多的糖果。

2024-03-25 21:10:55 638

原创 代码随想录算法训练营三刷 day32 | 贪心之 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

i 每次移动只能在 cover 的范围内移动,每移动一个元素,cover 得到该元素数值(新的覆盖范围)的补充,让 i 继续移动下去。从图中可以看出来,就是移动下标达到了当前覆盖的最远距离下标时,步数就要加一,来增加覆盖距离。贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。而 cover 每次只取 max(该元素数值补充后的范围, cover 本身范围)。这里还是有个特殊情况需要考虑,当移动下标达到了当前覆盖的最远距离下标时。

2024-03-24 09:10:59 328

原创 代码随想录算法训练营三刷 day31 | 贪心之455.分发饼干 376. 摆动序列 53. 最大子序和

针对以上情形,result 初始为 1(默认最右面有一个峰值),此时 curDiff > 0 && preDiff <= 0,那么 result++(计算了左面的峰值),最后得到的 result 就是 2(峰值个数为 2 即摆动序列长度为 2)其实是长度是 3,也就是我们在删除的时候 要不删除左面的三个 2,要不就删除右边的三个 2。图中,我们可以看出,版本一的代码在三个地方记录峰值,但其实结果因为是 2,因为 单调中的平坡 不能算峰值(即摆动)。如果我们采用,删左面三个 2 的规则,那么 当。

2024-03-22 20:57:23 885

原创 代码随想录算法训练营三刷day30|回溯 之 332.重新安排行程 51. N皇后 37. 解数独

【代码】代码随想录算法训练营三刷day30|回溯 之 332.重新安排行程 51. N皇后 37. 解数独。

2024-03-21 20:34:56 134

原创 代码随想录算法训练营三刷day29 | 回溯算法之 491.递增子序列 46.全排列 47.全排列 II

下面却没有对应的pop之类的操作,应该很不习惯吧,哈哈。可以看出元素1在[1,2]中已经使用过了,但是在[2,1]中还要在使用一次1,所以处理排列问题就不用使用startIndex了。因为排列问题,每次都要从头开始搜索,例如元素1在[1,2]中已经使用过了,但是在[2,1]中还要再使用一次1。首先排列是有序的,也就是说 [1,2] 和 [2,1] 是两个集合,这和之前分析的子集以及组合所不同的地方。当收集元素的数组path的大小达到和nums数组一样大的时候,说明找到了一个全排列,也表示到达了叶子节点。

2024-03-20 21:58:40 475

原创 代码随想录算法训练营day28 | 回溯算法之93.复原IP地址 78.子集 90.子集II

情况就不同了,本题明确要求只会分成4段,所以不能用切割线切到最后作为终止条件,而是分割的段数作为终止条件。循环中 [startIndex, i] 这个区间就是截取的子串,需要判断这个子串是否合法。递归调用时,下一层递归的startIndex要从i+2开始(因为需要在字符串中加入了分隔符。startIndex一定是需要的,因为不能重复分割,记录下一层递归分割的起始位置。pointNum表示逗点数量,pointNum为3说明字符串分成了4段了。删掉就可以了,pointNum也要-1。

2024-03-19 20:47:18 906

原创 代码随想录算法训练营三刷day27 | 回溯之 39. 组合总和 40.组合总和II 131.分割回文串

此外我还定义了int型的sum变量来统计单一结果path里的总和,其实这个sum也可以不用,用target做相应的减法就可以了,最后如何target==0就说明找到符合的结果了,但为了代码逻辑清晰,我依然用了sum。以及上面的版本一的代码大家可以看到,对于sum已经大于target的情况,其实是依然进入了下一层递归,只是下一层递归结束判断的时候,会判断。(这两个参数可以放到函数参数里)可以使用双指针法,一个指针从前向后,一个指针从后向前,如果前后指针所指向的元素是相等的,就是回文字符串了。

2024-03-18 19:53:57 860

原创 代码随想录算法训练营三刷day25 | 回溯 之 216.组合总和III 17.电话号码的字母组合

其实这里sum这个参数也可以省略,每次targetSum减去选取的元素数值,然后判断如果targetSum为0了,说明收集到符合条件的结果了,我这里为了直观便于理解,还是加一个sum参数。如果此时path里收集到的元素和(sum) 和targetSum(就是题目描述的n)相同了,就用result收集当前的结果。处理过程就是 path收集每次选取的元素,相当于树型结构里的边,sum来统计path里元素的总和。例如输入用例"23",两个数字,那么根节点往下递归两层就可以了,叶子节点就是要收集的结果集。

2024-03-17 10:00:54 914

原创 代码随想录算法训练营三刷day24 | 回溯算法 之 理论基础 77. 组合

从下图中红线部分可以看出,在集合[1,2,3,4]取1之后,下一层递归,就要在[2,3,4]中取数了,那么下一层递归如何知道从[2,3,4]中取数呢,靠的就是startIndex。第一次取1,集合变为2,3,4 ,因为k为2,我们只需要再取一个数就可以了,分别取2,3,4,得到集合[1,2] [1,3] [1,4],以此类推。可以看出这棵树,一开始集合是 1,2,3,4, 从左向右取数,取过的数,不再重复取。函数里一定有两个参数,既然是集合n里面取k个数,那么n和k是两个int型的参数。

2024-03-15 16:25:31 1022

原创 代码随想录算法训练营三刷 day23 | 二叉树 之 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

2024-03-14 21:43:15 876

原创 代码随想录算法训练营三刷day22 |二叉树之 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

到这里,大家应该能感受到,如何通过递归函数返回值完成了新加入节点的父子关系赋值操作了,下一层将加入节点返回,本层用。可以有,也可以没有,但递归函数如果没有返回值的话,实现是比较麻烦的,下面也会给出其具体实现代码。说到递归函数的返回值,在上一题中通过递归返回值来加入新节点, 这里也可以通过递归返回值删除节点。终止条件就是找到遍历的节点为null的时候,就是要插入节点的位置了,并把插入的节点返回。这里把添加的节点返回给上一层,就完成了父子节点的赋值操作了,详细再往下看。,其余的情况的最近公共祖先就是根节点。

2024-03-13 21:47:24 832

原创 代码随想录算法训练营day21 | 二叉树 之 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

2024-03-12 20:05:28 426

原创 代码随想录算法训练营day20 | 二叉树之 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

2024-03-11 16:29:38 936

原创 代码随想录算法训练营三刷day 18| 二叉树之 513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

2024-03-09 20:57:59 812

原创 代码随想录三刷 day17 | 二叉树之110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和

节点A的左孩子不为空,且左孩子的左右孩子都为空(说明是叶子节点),那么A节点的左孩子为左叶子节点。

2024-03-08 21:00:10 392

原创 代码随想录三刷 day16 | 二叉树之104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

2024-03-07 21:18:24 761

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除