12 2021 档案
摘要:47. 全排列 II 题目链接:47. 全排列 II(中等) 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]] 示例 2: 输入:nums = [1,2,3]输出
阅读全文
摘要:46. 全排列 题目链接:46. 全排列(中等) 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
阅读全文
摘要:491. 递增子序列 题目链接: 491. 递增子序列(中等) 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。 示例 1: 输入:nu
阅读全文
摘要:90. 子集 II 题目链接:90. 子集 II(中等) 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 示例 1: 输入:nums = [1,2,2]输出:[[],[1],[1,2]
阅读全文
摘要:78. 子集 题目链接:78. 子集(中等) 难度1427收藏分享切换为英文接收动态反馈 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3]输出:[[]
阅读全文
摘要:93. 复原 IP 地址 题目链接:93. 复原 IP 地址(中等) 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.2
阅读全文
摘要:131. 分割回文串 题目链接:131. 分割回文串(中等) 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = "aab"输出:[["a","a","b"],["aa","b"
阅读全文
摘要:40. 组合总和 II 题目链接:40. 组合总和 II(中等) 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 注意:解集不能包含重复的组合。
阅读全文
摘要:39. 组合总和 题目链接:39. 组合总和(中等) 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidate
阅读全文
摘要:17. 电话号码的字母组合 题目连接:17. 电话号码的字母组合(中等) 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = "23"输出:["ad
阅读全文
摘要:216. 组合总和 III 216. 组合总和 III(中等) 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k = 3, n = 7输出: [[1,2
阅读全文
摘要:77. 组合 题目链接:77. 组合(中等) 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],] 示
阅读全文
摘要:538. 把二叉搜索树转换为累加树 题目链接:538. 把二叉搜索树转换为累加树(中等) 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下,二叉搜索树满
阅读全文
摘要:108. 将有序数组转换为二叉搜索树 题目链接:108. 将有序数组转换为二叉搜索树(简单) 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 1:
阅读全文
摘要:669. 修剪二叉搜索树 题目链接:669. 修剪二叉搜索树(中等) 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都
阅读全文
摘要:450. 删除二叉搜索树中的节点 题目链接:450. 删除二叉搜索树中的节点(中等) 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找
阅读全文
摘要:701. 二叉搜索树中的插入操作 题目链接:701. 二叉搜索树中的插入操作(中等) 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效的插入方式,只要树在插入后
阅读全文
摘要:235. 二叉搜索树的最近公共祖先 题目链接:235. 二叉搜索树的最近公共祖先(简单) 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可
阅读全文
摘要:236. 二叉树的最近公共祖先 题目链接:236. 二叉树的最近公共祖先(中等) 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节
阅读全文
摘要:501. 二叉搜索树中的众数 题目链接:501. 二叉搜索树中的众数(简单) 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右
阅读全文
摘要:530. 二叉搜索树的最小绝对差 题目链接:530. 二叉搜索树的最小绝对差(简单) 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root = [4,2,6,1,3]输出:1 示例 2: 输入:
阅读全文
摘要:98. 验证二叉搜索树 题目链接:98. 验证二叉搜索树(中等) 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例
阅读全文
摘要:700. 二叉搜索树中的搜索 题目链接:700. 二叉搜索树中的搜索(简单) 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值:
阅读全文
摘要:617. 合并二叉树 题目链接: 617. 合并二叉树(简单) 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树
阅读全文
摘要:654. 最大二叉树 题目链接:654. 最大二叉树(中等) 给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下: 二叉树的根是数组 nums 中的最大元素。 左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树。 右子树是通过数组中 最大值右边部分
阅读全文
摘要:105. 从前序与中序遍历序列构造二叉树 题目链接:105. 从前序与中序遍历序列构造二叉树(中等) 给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。 示例 1: 3 / \ 9 20 / \ 15 7 Input: preorder = [3,9,2
阅读全文
摘要:106. 从中序与后序遍历序列构造二叉树 题目链接:106. 从中序与后序遍历序列构造二叉树(中等) 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,
阅读全文
摘要:113. 路径总和 II 题目链接:113. 路径总和 II(中等) 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [5,4,8,11,null,1
阅读全文
摘要:112. 路径总和 题目链接:112. 路径总和(简单) 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节
阅读全文
摘要:513. 找树左下角的值 题目链接:513. 找树左下角的值(中等) 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root = [2,1,3]输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,n
阅读全文
摘要:404. 左叶子之和 题目链接:404. 左叶子之和(简单) 计算给定二叉树的所有左叶子之和。 示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 题解 思路 这道题的关键是如何找到左叶子节点。通过观察,我们可以发现,判断节点是否是左叶
阅读全文
摘要:572. 另一棵树的子树 题目链接:572. 另一棵树的子树(简单) 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节
阅读全文
摘要:100. 相同的树 题目链接: 100. 相同的树(简单) 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p = [1,2,3], q = [1,2,3]输出:true 示例 2: 输
阅读全文
摘要:257. 二叉树的所有路径 题目链接:257. 二叉树的所有路径(简单) 题目描述 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [1,2,3,null,5]输出:["1->2->5","1-
阅读全文
摘要:110. 平衡二叉树 题目链接:110. 平衡二叉树(简单) 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root = [3,9,20,null,null,15,7]
阅读全文
摘要:222. 完全二叉树的节点个数 题目链接:222. 完全二叉树的节点个数(中等) 题目描述 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位
阅读全文
摘要:111. 二叉树的最小深度 题目链接: 111. 二叉树的最小深度(简单) 题解 思路:该题看似与104. 二叉树的最大深度(递归法) 差不多,但其实相差得还是有点多。在解该题的时候对于“确认单层递归的逻辑”上,我先是将104. 二叉树的最大深度(递归法) 中对应的代码改成了: int leftDe
阅读全文