- 博客(251)
- 收藏
- 关注
原创 LeetCode 111. 二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7]
2023-05-23 14:52:38 819
原创 LeetCode 117. 填充每个节点的下一个右侧节点指针 II
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。
2023-05-22 14:51:48 864
原创 LeetCode 116. 填充每个节点的下一个右侧节点指针
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。
2023-05-19 15:19:32 692
原创 LeetCode 429. N 叉树的层序遍历
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
2023-05-18 15:13:16 555
原创 LeetCode 637. 二叉树的层平均值
给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差10−5以内的答案可以被接受。
2023-05-18 14:18:02 632
原创 LeetCode 199. 二叉树的右视图
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
2023-05-17 14:53:40 323
原创 LeetCode 107. 二叉树的层序遍历 II
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
2023-05-17 11:01:36 409
原创 LeetCode 124. 二叉树中的最大路径和
对于一个父节点,它关心自己走入一个子树,从中捞取的最大收益,不关心具体怎么走。定义dfs函数:返回当前子树能向父节点“提供”的最大路径和。即,一条从父节点延伸下来的路径,能在当前子树中捞取的最大收益。分三种情况:路径停在当前子树的根节点,在当前子树的最大收益:root.val走入左子树,在当前子树的最大收益:root.val + dfs(root.left)走入右子树,在当前子树的最大收益:root.val + dfs(root.right)
2023-05-16 17:54:09 345
原创 LeetCode 136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4。
2022-10-27 15:17:55 495
原创 LeetCode 78. 子集
给你一个整数数组 nums ,数组中的元素 互不相同。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按返回解集。输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]输入:nums = [0]输出:[[],[0]]
2022-10-26 16:41:52 353
原创 LeetCode 48. 旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
2022-10-26 13:57:39 220
原创 LeetCode 47. 全排列 II
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
2022-10-25 15:43:15 126
原创 LeetCode 46. 全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以返回答案。输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]输入:nums = [0,1]输出:[[0,1],[1,0]]输入:nums = [1]输出:[[1]]
2022-10-25 15:06:26 296
原创 LeetCode 40. 组合总和 II
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次。注意:解集不能包含重复的组合。输入: candidates = [10,1,2,7,6,1,5], target = 8,输出:[[1,1,6],[1,2,5],[1,7],[2,6]]
2022-10-24 14:16:56 698
原创 LeetCode16. 最接近的三数之和
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。输入:nums = [0,0,0], target = 1输出:0。
2022-10-24 11:05:02 731
原创 LeetCode 39. 组合总和
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。
2022-10-23 21:52:02 288
原创 LeetCode 208. 实现 Trie (前缀树)
从根结点的子结点开始,一直向下匹配即可,如果出现结点值为空就返回 false,如果匹配到了最后一个字符,那我们只需判断 node.isEnd即可。和 search 操作类似,只是不需要判断最后一个字符结点的isEnd,因为既然能匹配到最后一个字符,那后面一定有单词是以它为前缀的。若搜索到了前缀的末尾,就说明字典树中存在该前缀。此外,若前缀末尾对应节点的 isEnd 为真,则说明字典树中存在该字符串。重复以上步骤,直到处理字符串的最后一个字符,然后将当前节点isEnd = true,即标记为字符串的结尾。
2022-10-22 22:18:11 147
原创 LeetCode 581. 最短无序连续子数组
给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度.输入:nums = [2,6,4,8,10,9,15]输出:5解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。输入:nums = [1,2,3,4]输出:0输入:nums = [1]输出:0。
2022-10-21 18:12:28 254
原创 LeetCode 11. 盛最多水的容器
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。
2022-10-21 16:54:49 417
原创 LeetCode 15. 三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= j、i!= k 且 j!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。
2022-10-20 12:19:24 874
原创 LeetCode 152. 乘积最大子数组
定义maxDp[i]表示以第 i 个元素结尾的乘积最大子数组的乘积;定义minDp[i]表示以第 i 个元素结尾的乘积最小子数组的乘积;
2022-10-20 10:27:51 294
原创 337. 打家劫舍 III
小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root。除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果,房屋将自动报警。给定二叉树的 root。返回,小偷能够盗取的最高金额。
2022-10-19 15:51:56 290
原创 LeetCode 316. 去除重复字母
给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。输入:s = “bcabc”输出:“abc”输入:s = “cbacdcbc”输出:“acdb”
2022-10-17 15:38:24 544
原创 LeetCode 140. 单词拆分 II
给定一个字符串 s 和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。注意:词典中的同一个单词可能在分段中被重复使用多次。
2022-10-16 16:29:36 321
原创 LeetCode 139. 单词拆分
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
2022-10-15 23:02:50 316
原创 LeetCode 131. 分割回文串
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。回文串是正着读和反着读都一样的字符串。输入:s = “aab”输出:[[“a”,“a”,“b”],[“aa”,“b”]]输入:s = “a”输出:[[“a”]]
2022-10-14 16:28:57 640
原创 LeetCode 97. 交错字符串
初始化 s1,s2,s3 的长度分别为 len1,len2,len3初始化 dp 为 (len1+1)*(len2+1) 的 初始值为false的二维数组, dp[i][j]表示s1的前 i 个元素和s2的前 j个元素是否能交错组成s3的前i + j个元素。
2022-10-14 12:02:16 440
原创 LeetCode 95. 不同的二叉搜索树 II
给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树。可以按 任意顺序 返回答案。
2022-10-13 17:04:25 255
原创 LeetCode 96. 不同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
2022-10-12 11:47:26 266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人