leetcode题解
ghblk
这个作者很懒,什么都没留下…
展开
-
283. 移动零
移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。原创 2024-07-05 00:24:34 · 275 阅读 · 0 评论 -
128. 最长连续序列
找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。最长数字连续序列是 [1, 2, 3, 4]。请你设计并实现时间复杂度为。给定一个未排序的整数数组。原创 2024-07-03 16:23:19 · 298 阅读 · 0 评论 -
49. 字母异位词分组
是由重新排列源单词的所有字母得到的一个新单词。可以按任意顺序返回结果列表。给你一个字符串数组,请你将。原创 2024-07-03 02:55:24 · 404 阅读 · 0 评论 -
1两数之和
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。你可以想出一个时间复。原创 2024-07-01 22:48:46 · 212 阅读 · 1 评论 -
435. 无重叠区间
要想保留的区间最多,就先要排序(使合理的方案中的区间最紧凑,越紧凑保留的区间就越多),然后找出排完序不重合的(找出一个合理的方案)你需要移除两个 [1,2] 来使剩下的区间没有重叠。你不需要移除任何区间,因为它们已经是无重叠的了。需要移除区间的最小数量,使剩余区间互不重叠。移除 [1,3] 后,剩下的区间没有重叠。去掉的区间最少=保留的区间最多。原创 2023-11-06 16:27:59 · 149 阅读 · 0 评论 -
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支箭。可以射出的弓箭的数量。原创 2023-11-02 12:28:26 · 117 阅读 · 0 评论 -
45. 跳跃游戏 II
从下标为 0 跳到下标为 1 的位置,跳。向前跳转的最大长度。生成的测试用例可以到达。跳到最后一个位置的最小跳跃数是。步到达数组的最后一个位置。处,你可以跳转到任意。原创 2023-10-31 14:27:01 · 90 阅读 · 0 评论 -
55. 跳跃游戏
无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回。给你一个非负整数数组。原创 2023-10-30 14:19:17 · 100 阅读 · 0 评论 -
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 的人。原创 2023-10-27 14:54:29 · 66 阅读 · 0 评论 -
135. 分发糖果
如果ratings[i]>ratings[i+1]时,canNum[i]必须大于canNum[i+1],所以canNum[i]至少要是canNum[i+1]+1,但是canNum[i+1]+1,如果还不如。那canNum[i+1]+1较大时,则会不会canNum[i+1]+1破坏上一次遍历的结果呢。上一次遍历得来的canNum[i]大,那么则保持原有的canNum[i]你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。原创 2023-10-25 11:48:25 · 83 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0。原创 2023-10-24 14:46:54 · 44 阅读 · 0 评论 -
738. 单调递增的数字
当且仅当每个相邻位数上的数字。的最大数字,且数字呈。时,我们称这个整数是。原创 2023-10-23 14:51:05 · 57 阅读 · 0 评论 -
860. 柠檬水找零
对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付。前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。原创 2023-10-21 00:33:57 · 207 阅读 · 1 评论 -
1005. K 次取反后最大化的数组和
选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2]。选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4]。选择下标 1 ,nums 变为 [4,-2,3]。以这种方式修改数组后,返回数组。可以多次选择同一个下标。原创 2023-10-19 17:28:25 · 80 阅读 · 0 评论 -
455. 分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。,这是能让孩子们满足胃口的饼干的最小尺寸;你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。你拥有的饼干数量和尺寸都足以让所有孩子满足。,我们可以将这个饼干。原创 2023-10-13 23:53:08 · 270 阅读 · 0 评论 -
统计值等于子树平均值的节点数
对值为 4 的节点:子树的平均值 (4 + 8 + 5 + 0 + 1 + 6) / 6 = 24 / 6 = 4。对值为 5 的节点:子树的平均值 (5 + 6) / 2 = 11 / 2 = 5。解释:对值为 1 的节点:子树的平均值 1 / 1 = 1。输入:root = [4,8,5,0,1,null,6]对值为 0 的节点:子树的平均值 0 / 1 = 0。对值为 1 的节点:子树的平均值 1 / 1 = 1。对值为 6 的节点:子树的平均值 6 / 1 = 6。原创 2023-05-15 20:09:52 · 51 阅读 · 0 评论 -
找出克隆二叉树的相同节点
请找出在树 cloned 中,与 target 相同 的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。输入: tree = [8,null,6,null,5,null,4,null,3,null,2,null,1], target = 4。输入: tree = [7,4,3,null,null,6,19], target = 3。target 节点是树 original 中的一个节点,并且不会是 null。树中节点的数量范围为 [1, 104]。原创 2023-05-14 17:23:10 · 41 阅读 · 0 评论 -
1302. 层数最深叶子节点的和
输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]链接:https://leetcode.cn/problems/deepest-leaves-sum。给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和。树中节点数目在范围 [1, 104] 之间。原创 2023-05-11 20:53:09 · 59 阅读 · 0 评论 -
leetcode装饰树
输出:[3,-1,-1,1,null,null,7,-1,-1,null,-1,3,null,null,8,null,4]在一个 父节点 x 与其左子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的左子节点,在一个 父节点 x 与其右子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的右子节点,若一个节点拥有父节点,则在该节点和他的父节点之间插入一个灯饰(即插入一个值为 -1 的节点)。输出:[7,-1,-1,5,null,null,6]原创 2023-05-04 16:15:12 · 64 阅读 · 1 评论 -
剑指 Offer II 054. 所有大于等于节点的值之和
输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]输入:root = [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]给定一个二叉搜索树,请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。输入:root = [3,2,4,1]输出:[1,null,1]输出:[7,9,4,10]原创 2023-05-04 16:52:54 · 70 阅读 · 1 评论 -
237. 删除链表中的节点
node 不应该是链表的最后一个节点,而应该是链表中的一个实际节点。解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9。解释:指定链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9。链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。有一个单链表的 head,我们想删除它其中的一个节点 node。需要删除的节点 node 是 链表中的节点 ,且 不是末尾节点。输出:[4,1,9]原创 2023-05-04 16:55:21 · 52 阅读 · 0 评论 -
51. N 皇后
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。的棋盘上,并且使皇后彼此之间不能相互攻击。如上图所示,4 皇后问题存在两个不同的解法。的棋子放置方案,该方案中。每一种解法包含一个不同的。分别代表了皇后和空位。原创 2023-10-10 15:58:20 · 51 阅读 · 0 评论 -
90. 子集 II
其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。返回的解集中,子集可以按。原创 2023-10-07 15:53:25 · 55 阅读 · 0 评论 -
78. 子集
返回该数组所有可能的子集(幂集)。原创 2023-10-06 17:35:25 · 75 阅读 · 0 评论 -
39. 组合总和
2 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。如果至少一个数字的被选数量不同,则两种组合是不同的。7 也是一个候选, 7 = 7。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。原创 2023-10-06 14:52:51 · 100 阅读 · 0 评论 -
93. 复原 IP 地址
用以表示一个 IP 地址,返回所有可能的。正好由四个整数(每个整数位于。之间组成,且不能含有前导。给定一个只包含数字的字符串。,这些地址可以通过在。原创 2023-10-04 17:18:54 · 446 阅读 · 0 评论 -
40. 组合总和 II
中的每个数字在每个组合中只能使用。给定一个候选人编号的集合。解集不能包含重复的组合。中所有可以使数字和为。原创 2023-10-01 23:48:02 · 190 阅读 · 0 评论 -
17. 电话号码的字母组合
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。原创 2023-09-28 22:32:55 · 237 阅读 · 0 评论 -
216. 组合总和 III
在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。该列表不能包含相同的组合两次,组合可以以任何顺序返回。所有可能的有效组合的列表。没有其他符合的组合了。没有其他符合的组合了。原创 2023-09-27 15:48:34 · 165 阅读 · 0 评论 -
77. 组合
【代码】77. 组合。原创 2023-09-26 17:11:35 · 95 阅读 · 0 评论 -
1038. 从二叉搜索树到更大和树
(BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。原创 2023-09-24 19:53:16 · 99 阅读 · 0 评论 -
108. 将有序数组转换为二叉搜索树
二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。排列,请你将其转换为一棵。原创 2023-09-23 16:16:09 · 160 阅读 · 0 评论 -
669. 修剪二叉搜索树
改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。通过修剪二叉搜索树,使得所有节点的值在。给你二叉搜索树的根节点。原创 2023-09-19 20:58:39 · 60 阅读 · 0 评论 -
701. 二叉搜索树中的插入操作
可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。,新值和原始二叉搜索树中的任意节点值都不同。给定二叉搜索树(BST)的根节点。原创 2023-09-18 20:42:07 · 90 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。, 因为根据定义最近公共祖先节点可以为节点本身。原创 2023-09-17 19:20:37 · 91 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。因为根据定义最近公共祖先节点可以为节点本身。的最近公共祖先是节点。的最近公共祖先是节点。原创 2023-09-16 17:14:37 · 56 阅读 · 0 评论 -
501. 二叉搜索树中的众数
给你一个含重复值的二叉搜索树(BST)的根节点。,找出并返回 BST 中的所有。如果树中有不止一个众数,可以按。(即,出现频率最高的元素)。原创 2023-09-10 16:18:41 · 91 阅读 · 0 评论 -
530. 二叉搜索树的最小绝对差
差值是一个正数,其数值等于两值之差的绝对值。给你一个二叉搜索树的根节点。原创 2023-09-09 19:36:14 · 98 阅读 · 0 评论 -
98. 验证二叉搜索树
中序遍历是左中右的顺序,刚刚好搜索二叉树的特点是左<中<右。根节点的值是 5 ,但是右子节点的值是 4。,判断其是否是一个有效的二叉搜索树。给你一个二叉树的根节点。原创 2023-09-07 20:29:08 · 369 阅读 · 0 评论 -
700. 二叉搜索树中的搜索
返回以该节点为根的子树。如果节点不存在,则返回。你需要在 BST 中找到节点值等于。给定二叉搜索树(BST)的根节点。原创 2023-08-20 17:26:12 · 79 阅读 · 0 评论