自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

历经60天的训练营终于结束啦,感觉自己两个月前做的这个决定非常正确,非常感谢卡哥和卡哥助手,从一个代码没有系统刷题没有体系的小白到现在已经有了一些基础,也具备一些刷题的习惯和手感,如果是我自己没有规划的刷可能难以坚持。当然也非常感谢两个月以来的自己,真的坚持下来了!你真的很棒!这两个月坚持记录自己的打卡并发布,也收获了一些点赞,虽然这些点赞很多是僵尸粉吧哈哈哈,但也给我了在网络上撰写题解的习惯和勇气~在这段时间的面试中我也从不太写的出代码题到有思路再到现在能ac一些题了,感受到了自己的进步,当然算法学习还是

2024-05-24 10:49:03 403

原创 Day60代码随想录单调栈part03:84.柱状图中最大的矩形

如果数组本身是降序的,例如 [8,6,4,2],在 8 入栈后,6 开始与8 进行比较,此时我们得到 mid(8),rigt(6),但是得不到 left。如果数组本身就是升序的,例如[2,4,6,8],那么入栈之后 都是单调递减,一直都没有走 情况三 计算结果的哪一步,所以最后输出的就是0了。题意:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。元素从栈顶到栈底是单调递增的求的是比他大的元素,反之求的是比他小的元素。

2024-05-21 13:08:55 428

原创 Day59代码随想录单调栈part02:503.下一个更大元素II、42. 接雨水

题目:给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。题意:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。,最后再把结果集即result数组resize到原数组大小就可以了。单调栈解法:接雨水这道题目,我们正需要寻找一个元素,

2024-05-20 11:14:45 249

原创 Day57代码随想录单调栈part01:739. 每日温度、496.下一个更大元素 I

输入: nums1 = [4,1,2], nums2 = [1,3,4,2]. 输出: [-1,3,-1] 解释: 对于 num1 中的数字 4 ,你无法在第二个数组中找到下一个更大的数字,因此输出 -1。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。

2024-05-18 21:24:45 549

原创 Day56代码随想录动态规划part17:647. 回文子串、516.最长回文子序列

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。:如果是暴力解法,两层for循环,遍历区间起始位置和终止位置,然后还需b要一层遍历判断这个区间是不是回文。题意:给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "bbbb"。示例 2: 输入:"cbbd" 输出: 2 一个可能的最长回文子序列为 "bb"。

2024-05-17 21:38:11 688

原创 Day55代码随想录动态规划part16:583. 两个字符串的删除操作、72. 编辑距离

那最后当然是取最小值,所以当word1[i - 1] 与 word2[j - 1]不相同的时候,递推公式:dp[i][j] = min({dp[i - 1][j - 1] + 2, dp[i - 1][j] + 1, dp[i][j - 1] + 1});因为 dp[i][j - 1] + 1 = dp[i - 1][j - 1] + 2,所以递推公式可简化为:dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);,情况虽说复杂一些,但整体思路是不变的。

2024-05-16 20:33:34 1747

原创 Day54代码随想录动态规划part15:392.判断子序列、115.不同的子序列

题意:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。思路:本题可转化为求最长公共子序列,如果最长公共子序列长度为len(s)则可以返回true。题意:给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。思路:有多少种删除元素的方式,让s和t相同,仍然以s为基准。

2024-05-15 13:16:33 411

原创 Day53代码随想录动态规划part14:1143.最长公共子序列、1035.不相交的线、53. 最大子序和动态规划

给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。**区别在于这里不要求是连续的了,但要有相对顺序,即:"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。

2024-05-14 13:29:09 829

原创 Day52代码随想录动态规划part13:300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

题意:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。题意:给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。思路:只用和i-1比较了,都不用有循环了。题意:相比于上一题,这题是连续的。

2024-05-13 21:40:46 366

原创 Day50代码随想录动态规划part12:309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

题意:给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。题意:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格。设计一个算法计算出最大利润。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。

2024-05-12 11:11:05 323

原创 Day49代码随想录动态规划part11:123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

题意:本题至多买卖k次,可以收获的最大利润。示例:[3,3,5,0,0,3,1,4]思路:下标表示到2k,有2*k+1种状态。本题是至多买卖2次收获的最大利润。

2024-05-10 12:09:25 305

原创 Day48代码随想录动态规划part10:121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

dp[0][0]表示第0天持有,那就是第0天买入,dp[0][0] = -price[0];确定dp数组(dp table)以及下标的含义:dp[i][0]表示第i天持有股票所得最多的现金,dp[i][1]表示第i天不持有股票所得的最多现金。同样dp[i][1]取最大的,dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0]);那么dp[i][0]应该选所得现金最大的,所以dp[i][0] = max(dp[i - 1][0], -prices[i]);

2024-05-09 14:18:27 434

原创 Day47代码随想录动态规划part09:198.打家劫舍、213.打家劫舍II、337.打家劫舍 III(二叉树和动态规划的结合)

所以dp[0] = nums[0], dp[1] = max(dp[0], nums[1]),注意这里的房间编号是从0开始计数的,所以最终返回dp[len(nums)-1](1)如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。(2)如果不偷第i房间,那么dp[i] = dp[i - 1],即考 虑i-1房,((是节点的参数,表示节点状态),

2024-05-08 15:25:17 1721

原创 Day45代码随想录动态规划part07:70. 爬楼梯(进阶版)、322. 零钱兑换、279.完全平方数、139.单词拆分

这道题出现的问题:(1)首先dp[0]的初始化还应该是1,因为dp[0]是后序累加的基础;(2)递推公式没有想清楚,这里是dp[i]有几种来源,dp[i - 1],dp[i - 2],dp[i - 3] 等等,即:dp[i - j],所以是累加的关系。你可以认为每种硬币的数量是无限的。题意:假设你正在爬楼梯。题意:给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。:题目中说每种硬币的数量是无限的,可以看出是典型的完全背包问题。

2024-05-06 18:53:36 534

原创 Day44代码随想录动态规划part05:完全背包理论、518.零钱兑换II、377. 组合总和 Ⅳ

dp[0]=1还说明了一种情况:如果正好选了coins[i]后,也就是j-coins[i] == 0的情况表示这个硬币刚好能选,此时dp[0]为1表示只选coins[i]存在这样的一种选法。所有可能的组合为: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1)请注意,顺序不同的序列被视作不同的组合。遍历顺序:**本题很重要!推导公式:dp[j] += dp[j-coins[i]],这其中5可以有5+0种,4+1, 3+2,类似。

2024-05-06 00:13:40 758

原创 Day43代码随想录动态规划part05:1049.最后一块石头的重量II、494.目标和、474.一和零

leetcode题目链接:1049. 最后一块石头的重量 II - 力扣(LeetCode)题意:有一堆石头,用整数数组 表示。其中 表示第 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 和 ,且 。那么粉碎的可能结果如下:最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 。**思路:类似分割等额子集!我们想把这些分为尽可能总和相等的两堆!**本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成0

2024-05-04 22:07:29 877

原创 Day42代码随想录动态规划part04:01背包问题的二维数组解法、01背包问题的一维数组解法、416. 分割等和子集

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。

2024-04-30 17:49:17 502

原创 Day41代码随想录动态规划part03:343. 整数拆分、96.不同的二叉搜索树

但是n = 0时是空树null也是二叉搜索树=1,n=1是1棵树=1, n=2时有两棵。eg: n=3, dp[3],就是 元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量。拆分的方式是 j × (i-j), 拆成多个就是j × dp[i-j]相当于0<j<i,所以是dp[i] = max(j。所以dp[3] = dp[2] * dp[0] + dp[1] * dp[1] + dp[0] * dp[2]题意:给定一个整数 n,求以 1 ... n 为节点组成的。

2024-04-29 10:42:55 323

原创 Day39代码随想录动态规划part02:62.不同路径、63. 不同路径 II

*题目描述:**一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。相比于上一题,这题就是存在障碍物,对障碍物有一些特殊处理就行。问总共有多少条不同的路径?

2024-04-27 20:43:33 209

原创 Day3代码随想录动态规划part01:动态规划原理、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划中dp[j]是由dp[j-weight[i]]推导出来的,然后取max(dp[j], dp[j - weight[i]] + value[i])。**举例:**背包问题:有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。**DP定义:**如果某一问题有很多重叠子问题,使用动态规划是最有效的。:第三层楼梯的状态可以由第二层楼梯 和 到第一层楼梯状态推导出来—第二层楼梯爬一步+第一层楼梯爬2步。,贪心没有状态推导,而是从局部直接选最优的。

2024-04-26 20:40:59 850

原创 Day37代码随想录贪心part06:738.单调递增的数字、968.监控二叉树

这道题看起来是要从前往后遍历,但是会出现以下问题:例如332,一开始33是符合的,但是到后面的32就不符合了,会变成329,这是这样又需要修改前一位了;所以这样遍历会造成之前的还需要重新变动。这里还有一个小技巧,虽然题目给出的是int类型,但是还是转化为str就可以逐位操作了,这样出现首位0的情况也不用担心,最终再转化位int即可。,才能充分利用摄像头的覆盖面积。**3、**情况处理,还是要再复习一下二叉树。

2024-04-25 10:50:03 327 1

原创 Day36代码随想录贪心part05:435. 无重叠区间、763.划分字母区间、56. 合并区间

题意:字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。补充:其实下列代码还是应该考虑intervals为空的情况的。**思路:**在遍历的过程中相当于是要找每一个字母的边界,一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。思路:还是基本和之前 435. 无重叠区间 相似的思路。此时前面出现过所有字母,最远也就到这个边界了。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。

2024-04-24 14:25:52 362

原创 Day35代码随想录贪心part04:860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。,会变为[5,0],[7,0],[6,1],[7,1],[5,2],[4,4]这样会发现[5,2]和[4,4]调整的时候,身高也是不能确定下来的,然后ki前面有几个人这个维度也比较难确定。

2024-04-23 16:36:48 811

原创 Day34代码随想录贪心part03:1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

*题意:**在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。:给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。**(1) 对列表排序:**假设你有一个包含元组的列表,每个元组包含名字和年龄,你想根据年龄对这个列表进行排序。**(2)查找最大值:**在同样的列表中,找到年龄最大的人。

2024-04-22 11:24:45 879

原创 Day32代码随想录贪心part02:122.买卖股票的最佳时机II(主要是动态规划,少数可以用贪心)、55. 跳跃游戏)、45.跳跃游戏II

(2)cur_cover = 2, i=1,2时遍历到[3,1], next_cover最大为4,3,此时i==cur_cover,step =2, break。首先在cur_cover的能力范围内,先找到最大的next_cover,然后此时如果i==cur_cover时也就是没到终点,那step+=1代表需要走下一步。(1)首先多天的利润其实可以拆分成单天的利润:p[3]-p[0] = (p[3]-p[2])+(p[2]-p[1])+(p[1]-p[0])注意边界:如果就1个元素,那么一定是可以覆盖的。

2024-04-20 20:16:32 728

原创 Day31代码随想录贪心part01:455.分发饼干、376. 摆动序列(也可以动态规划)、53. 最大子序和(也可以动态规划)

题意:例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。**值得注意的事情:**这里是从小孩的胃口g开始倒叙遍历的,而不是从饼干的大小开始的,这是很重要的!因为如果从饼干大的开始,发现饼干满足不了胃口最大的小孩,所以饼干减减,一直满足不了,那么结果就是不对的;

2024-04-20 20:13:14 405

原创 Day30代码随想录回溯part06:332.重新安排行程、451. N皇后、37. 解数独

本题的重点是一个二维递归,求一个数独的结果就可以了,所以返回值使用的是bool(找到一个就立刻返回),之前搜索所有集合的是使用的void。:这里只需要检查45度和135度而不用检查180度和-45度是因为这是逐行遍历的,所以下面是没有值的。传入参数:当前所在行数row、棋盘当前状态;全局变量result和path。单层递归逻辑:逐行遍历,在每一行中逐个位置找寻是不是合法位置。不能同行、不能同列、不能同斜线。终止条件:遍历到最后一行。

2024-04-18 16:54:22 202

原创 Day29代码随想录回溯part05:491.递增子序列、46.全排列、47.全排列 II

题目难度性不大,就是要记录不能重复使用(需要used数组记录path里都放了哪些元素了),同时是每一次都从第一位开始遍历的(每层都是从0开始搜索而不是startIndex)而本题求自增子序列,**是不能对原数组进行排序的,**排完序的数组都是自增子序列了。:给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。题意:给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。**题意:**给定一个 没有重复 数字的序列,返回其所有可能的全排列。

2024-04-17 11:33:42 320

原创 Day28代码随想录回溯part04:93.复原IP地址、78.子集、90.子集II

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]:之前的组合问题是在终止条件时收获结果,而子集问题是。说明:解集不能包含重复的子集。

2024-04-16 23:06:03 386

原创 Day26代码随想录回溯part03:39. 组合总和、40.组合总和II、131.分割回文串

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。这道题和之前的区别在于可以多次甚至无限次的选取同一个数,同时因为这些数都大于0或者说都是正整数,所以终止条件就是大于target就可以终止。给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。剪枝:如果for循环中本层的sum已经大于target了,就不需要再进行回溯了。

2024-04-15 22:47:28 253

原创 Day25代码随想录回溯part02:216.组合总和III、17.电话号码的字母组合

2、i的最大位置,也就是for循环的范围,首先i最大到i-(k-len(path.size))就结束了,也就是最多需要补充k-len(path.size)个数,由于下标所以是start_index,所以for循环的范围是[start_index, 9- (k-len(path.size))+1+1),例如pathsize中有1个数,还需要找2个,那就是9-(3-1)+1=8,但是89也是符合条件的,所以应该取9,边界结果是8+1。

2024-04-15 22:44:03 178

原创 Day24代码随想录回溯part01:回溯理论、77. 组合

回溯法都可以抽象为一个N叉树,以for循环和逐层递归出现的;

2024-04-12 23:40:07 301

原创 Day23代码随想录二叉树part08:669. 修剪二叉搜索树(难)、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L)。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。题意:给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。**思路:**这道题是比较难的,需要改变二叉树的结构;**思路:**遵循右、中、左的想法,需要有一个前一个节点的值pre记录,和当前节点cur。

2024-04-11 19:04:17 209

原创 Day22代码随想录二叉树part07:235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点(难)

题意:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。其实这道题是比较简单的,因为插入节点这个事情不需要改变二叉树的结构,只需要在叶子节点插入即可,二叉搜索树仍然可以利用性质。如果遇到了p q都大于cur的情况,则搜索右子树;在有序树里,如果判断一个节点的左子树里有p,右子树里有q呢?第一种情况:没找到删除的节点,遍历到空节点直接返回了。因为是有序树,所以只要从上到下去遍历,遇到。

2024-04-10 10:49:28 233

原创 Day21代码随想录二叉树part06:530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

defaultdict是Python内建dict类的一个子类,第一个参数为。

2024-04-09 13:37:56 283 1

原创 Day20代码随想录二叉树part05:654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

3、单层递归的逻辑:root->val > val,搜索左子树,如果root->val < val,就搜索右子树,最后如果都没有搜索到,就返回NULL。这题比较简单,就是以最大值划分区间,注意区间统一为左开右闭,同时边界条件是到至少包含1个元素的情况。要是**中序遍历(左中右)**这样是符合由小到大的顺序的,也是在中序做判断。陷阱2:样例中的最小节点可能是int的最小值,所以要用longlong来比较。1、返回值与传入参数:传入根节点和要搜索的数值,返回搜索数值所在的节点。本题使用哪种遍历方式都是可以的!

2024-04-08 20:16:41 170

原创 Day18代码随想录二叉树part05:513.找树左下角的值、112.路径总和、113.路径总和Ⅱ、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

(3)单层递归步骤:先求左逻辑,向左递归,count -= node→left→val, 递归traversal(node→left, count),①如果向左递归返回的是true说明存在路径,return True逐层返回,②如果返回的是False,则回溯count += node→left→val;(3)单层递归步骤:对于当前节点,如果存在left,则traversal(root.left, value(append(root.left))), right也是。递归法:找深度最大的节点中最左侧的一个。

2024-04-06 21:33:21 256 1

原创 Day17代码随想录二叉树part04:110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

因为我们要把路径记录下来,需要回溯来回退一个路径再进入另一个路径。,如果检查过程中就发现了高度差大于1的情况直接返回-1,题意:给定一个二叉树,返回所有从根节点到叶子节点的路径。:因为由父节点指向子节点生成一条路径。

2024-04-05 16:20:43 339 1

原创 Day16代码随想录二叉树part03:104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

如果不用完全二叉树的特性计算节点数量,就和之前两道题目类似,时间复杂度是O(n)因为每个节点都遍历了一遍,return 1 + left_height +right_height。思路:其实一开始的想法就是和求最大深度是一样的,把之前的return 1+ max(height)改为return 1+ min(height)就可以了,还是用的后序遍历。思路:因为采用后序遍历,所以用递归的方法,先计算左孩子,然后计算右孩子,最后的高度取1+max(左高度,右高度)559.n叉树的最大深度。

2024-04-04 20:36:09 336 1

原创 Day15代码随想录二叉树part02:层次遍历

只需要最后return res[::-1]

2024-04-03 16:39:50 248 1

空空如也

空空如也

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

TA关注的人

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