自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 1008. 前序遍历构造二叉搜索树

对于给定的测试用例,总是有可能找到具有给定需求的二叉搜索树。给定一个整数数组,它表示BST(即。是一棵二叉树,其中每个节点,首先显示节点的值,然后遍历。,构造树并返回其根。

2024-07-14 15:08:16 386

原创 1305. 两棵二叉搜索树中的所有元素

请你返回一个列表,其中包含。

2024-07-14 14:50:16 283

原创 面试题 04.02. 最小高度树

给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。给定有序数组: [-10,-3,0,5,9],

2024-07-14 14:16:43 365

原创 938. 二叉搜索树的范围和

返回值位于范围 [low, high]之间的所有结点的值的和。给定二叉搜索树的根结点。

2024-07-14 14:06:03 146

原创 807. 保持城市天际线

是从远处观察城市时,所有建筑物形成的外部轮廓。从东、南、西、北四个主要方向观测到的。个街区组成的城市,每个街区都包含一座立方体建筑。的建筑物的高度也可以增加。然而,增加的建筑物高度。增加任何建筑物的高度都会导致天际线的变化。用红色绘制从不同方向观看得到的天际线。的前提下,返回建筑物可以增加的。从任何主要方向观察城市得到的。从任何主要方向观测到的城市。建筑物的高度如上图中心所示。

2024-07-14 10:47:00 317

原创 724. 寻找数组的中心下标

左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。右侧数之和 sum = nums[1] + nums[2] = 1 + -1 = 0。是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。左侧数之和 sum = 0 ,(下标 0 左侧不存在元素),如果中心下标位于数组最左端,那么左侧数之和视为。数组中不存在满足此条件的中心下标。

2024-07-14 10:12:00 228

原创 2970. 统计移除递增子数组的数目 I

10 个移除递增子数组分别为:[1], [2], [3], [4], [1,2], [2,3], [3,4], [1,2,3], [2,3,4] 和 [1,2,3,4]。3 个移除递增子数组分别为:[8,7,6], [7,6,6] 和 [8,7,6,6]。注意 [8,7] 不是移除递增子数组因为移除 [8,7] 后 nums 变为 [6,6] ,它不是严格递增的。个移除递增子数组分别为:[5], [6], [5,7], [6,5], [5,7,8], [6,5,7] 和 [6,5,7,8]。

2024-07-14 10:02:09 333

原创 738.单调递增的数字

当且仅当每个相邻位数上的数字。的最大数字,且数字呈。时,我们称这个整数是。

2024-07-13 15:58:17 229

原创 56. 合并区间

区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。

2024-07-13 14:48:59 412

原创 763. 划分字母区间

像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。划分结果为 "ababcbaca"、"defegde"、"hijhklij"。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是。返回一个表示每个字符串片段的长度的列表。每个字母最多出现在一个片段中。

2024-07-13 11:11:58 206

原创 435. 无重叠区间

你需要移除两个 [1,2] 来使剩下的区间没有重叠。你不需要移除任何区间,因为它们已经是无重叠的了。需要移除区间的最小数量,使剩余区间互不重叠。移除 [1,3] 后,剩下的区间没有重叠。

2024-07-13 10:33:55 300

原创 452. 用最少数量的箭引爆气球

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组。-在x = 11处发射箭,击破气球[10,16]和[7,12]。- 在x = 2处发射箭,击破气球[1,2]和[2,3]。- 在x = 4处射出箭,击破气球[3,4]和[4,5]。-在x = 6处射出箭,击破气球[2,8]和[1,6]。处射出一支箭,若有一个气球的直径的开始和结束坐标为。你不知道气球的确切 y 坐标。弓箭一旦被射出之后,可以无限地前进。每个气球需要射出一支箭,总共需要4支箭。可以射出的弓箭的数量。

2024-07-13 10:15:37 194

原创 406. 根据身高重建队列

编号为 4 的人身高为 4 ,有 4 个身高更高或者相同的人排在他前面,即编号为 0、1、2、3 的人。因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。编号为 5 的人身高为 7 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。

2024-07-13 09:32:50 450

原创 860. 柠檬水找零

对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付。前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。

2024-07-12 18:02:09 294

原创 135. 分发糖果

你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。请你给每个孩子分发糖果,计算并返回需要准备的。表示每个孩子的评分。

2024-07-12 17:39:22 306

原创 134. 加油站

你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油。开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油。开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。

2024-07-12 16:46:56 310

原创 1005. K 次取反后最大化的数组和

选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2]。选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4]。选择下标 1 ,nums 变为 [4,-2,3]。以这种方式修改数组后,返回数组。可以多次选择同一个下标。

2024-07-12 16:09:01 189

原创 45. 跳跃游戏 II

跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1步,然后跳 3步到达数组的最后一个位置。向前跳转的最大长度。生成的测试用例可以到达。处,你可以跳转到任意。

2024-07-12 15:58:56 250

原创 55. 跳跃游戏

无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回。给你一个非负整数数组。

2024-07-12 14:54:20 281

原创 122. 买卖股票的最佳时机 II

随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0。

2024-07-12 14:21:03 393

原创 121. 买卖股票的最佳时机

在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。在这种情况下, 没有交易完成, 所以最大利润为 0。买入这只股票,并选择在。

2024-07-12 12:17:25 248

原创 53. 最大子数组和

请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。连续子数组 [4,-1,2,1] 的和最大,为 6。是数组中的一个连续部分。

2024-07-12 10:34:33 260

原创 376. 摆动序列

其中一个是 [1, 17, 10, 13, 10, 16, 8] ,各元素之间的差值为 (16, -7, 3, -3, 6, -8)。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。整个序列均为摆动序列,各元素之间的差值为 (6, -3, 5, -7, 3)。如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为。这个序列包含几个长度为 7 摆动序列。

2024-07-12 10:16:54 404

原创 455. 分发饼干

思路:尽让饼干满足更多的小孩,因此对小孩的胃口数组和饼干尺寸数组先进行排序操作,然后有2种方式,从前往后遍历,也就是先分发小尺寸的饼干给小胃口的孩子(第一份代码),第二种方法是从后往前遍历,先把最大的饼干去给胃口最大的孩子,看能否满足,否则看这块饼干能否满足下一个孩子的胃口(第二份代码),这两种方法都能通过,不过第二种分配方式,让更大尺寸的饼干去满足更大胃口的小孩,对饼干的浪费更小,但这题并不需要考虑这点。,这个孩子会得到满足。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。

2024-07-12 08:42:50 344

原创 1379.找出克隆二叉树中的相同节点

上图画出了树 original 和 cloned。target 节点在树 original 中,用绿色标记。答案是树 cloned 中的黄颜色的节点(其他示例类似)。的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。给你两棵二叉树,原始树。,以及一个位于原始树。中已有的节点的引用。

2024-07-11 23:05:42 414

原创 1302. 层数最深叶子节点的和

给你一棵二叉树的根节点。

2024-07-11 22:57:55 260

原创 LCP 67. 装饰树

力扣嘉年华上的 DIY 手工展位准备了一棵缩小版的。,请返回完成装饰后的树的根节点。现给定二叉树的根节点。

2024-07-11 22:53:48 354

原创 538. 把二叉搜索树转换为累加树

树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。的新值等于原树中大于或等于。

2024-07-10 16:53:05 283

原创 108. 将有序数组转换为二叉搜索树

1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。排列,请你将其转换为一棵。

2024-07-10 16:00:12 364

原创 669. 修剪二叉搜索树

改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。通过修剪二叉搜索树,使得所有节点的值在。给你二叉搜索树的根节点。

2024-07-10 15:30:28 373

原创 450. 删除二叉搜索树中的节点

对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。另一个正确答案是 [5,2,6,null,4,null,7]。二叉树不包含值为 0 的节点。给定一个二叉搜索树的根节点。,删除二叉搜索树中的。

2024-07-10 10:42:45 387

原创 701. 二叉搜索树中的插入操作

思路:把一个新的结点插入二叉搜索树,那就利用二叉搜索树有序的特性,其实很简单,但是例一可能迷惑了很多人,第一种插入方式是很直观的,按照值的大小,若当前结点的值大于val,那我就往左走,在左子树里找一个空结点插入,若大于就往右子树里找空节点插入。它还给了第二种插入方式,这种方式将整个树的结构都变了...大可不必采用这种方式,把这道简单题复杂化。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。,新值和原始二叉搜索树中的任意节点值都不同。

2024-07-10 10:00:32 317

原创 235. 二叉搜索树的最近公共祖先

中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]节点 2和节点 4的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。节点 2 和节点 8 的最近公共祖先是 6。

2024-07-10 09:42:38 1170

原创 236. 二叉树的最近公共祖先

思路:找两个结点的最近公共祖先,那我们应该得从底往上找,否则从上面往下开始找,找到的祖先不一定是最近的,比如根节点root一定是任意两个结点的祖先,但不一定是最近的公共祖先。若p和q分别出现在当前这个结点的左右子树中,那么当前节点是p和q的最先公共祖先,若p和q仅出现在当前这个结点的左子树中,那就对左子树继续递归,返回左子树的结果;反之出现在右子树中也一样。中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(

2024-07-10 08:51:59 326

原创 501. 二叉搜索树中的众数

给你一个含重复值的二叉搜索树(BST)的根节点。,找出并返回 BST 中的所有。如果树中有不止一个众数,可以按。(即,出现频率最高的元素)。

2024-07-09 20:35:25 260

原创 530. 二叉搜索树的最小绝对差

差值是一个正数,其数值等于两值之差的绝对值。给你一个二叉搜索树的根节点。

2024-07-09 20:06:21 172

原创 98. 验证二叉搜索树

根节点的值是 5 ,但是右子节点的值是 4。,判断其是否是一个有效的二叉搜索树。给你一个二叉树的根节点。

2024-07-09 19:57:55 338

原创 700. 二叉搜索树中的搜索

返回以该节点为根的子树。如果节点不存在,则返回。你需要在 BST 中找到节点值等于。给定二叉搜索树(BST)的根节点。

2024-07-09 19:37:54 314

原创 617. 合并二叉树

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;null 的节点将直接作为新二叉树的节点。合并过程必须从两个树的根节点开始。返回合并后的二叉树。

2024-07-09 19:29:09 140

原创 654. 最大二叉树

[3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 []。- 只有一个元素,所以子节点是一个值为 1 的节点。- 只有一个元素,所以子节点是一个值为 0 的节点。- 空数组,无子节点。- 空数组,无子节点。

2024-07-09 17:30:23 362

空空如也

空空如也

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

TA关注的人

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