关注Java领域相关技术 记录有趣的事情

LeetCode

LeetCode-404. 左叶子之和

问题地址 LeetCode每日一题/2020-09-19 LeetCode404. 左叶子之和 问题描述 规则 计算给定二叉树的所有左叶子之和。 示例 示例1 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 解析 解题思路 左叶子的判定条件 它是某个节点的左子节点; 它是一个叶子结点; 因此我们遍历整棵树,当我们遍历到某个节点 $\textit{node}$ 时,如果它的左子节点是一个叶子结点,那么就将它的左子节点的值累加计入答案。 数据操作分析 遍历整棵树,在遍历的过程中,判定某个节点是否满足左叶子的条件,判断条件: 左子节点; 叶…
US-B.Ralph
a year ago

LeetCode-47. 全排列 II

问题地址 LeetCode每日一题/2020-09-18 LeetCode47. 全排列 II 问题描述 规则 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例 示例1 输入: 输出: , , ] 解析 解题思路 根据题目规则本题有两点约束: 数字不可以被重复选择; 找到的排列不能重复,由于本题所给的输入中包含重复数字,故$$与$$属重复排列; 数据操作分析 本题对排列组合结果的顺序没有要求,我们为了后边去重更方便首先对给定数组排序,对于排序后的数组进行全排列时,使用如下规则对重复排列去重: $nums = $; $visited = true$; 对于第一条约束我们需要判断 $v…
US-B.Ralph
a year ago

LeetCode-685. 冗余连接 II

问题地址 LeetCode每日一题/2020-09-17 LeetCode685. 冗余连接 II 问题描述 规则 在本问题中,有根树指满足以下条件的有向图。该树只有一个根节点,所有其他节点都是该根节点的后继。每一个节点只有一个父节点,除了根节点没有父节点。 输入一个有向图,该图由一个有着$N$个节点 (节点值不重复$1, 2, ..., N$) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。 结果图是一个以边组成的二维数组。 每一个边 的元素是一对 $$,用以表示有向图中连接顶点 $u$ 和顶点 $v$ 的边,其中 $u$ 是 $v$ 的一个父…
US-B.Ralph
a year ago

LeetCode-226. 翻转二叉树

问题地址 LeetCode每日一题/2020-09-16 LeetCode226. 翻转二叉树 问题描述 规则 翻转一棵二叉树。 示例 示例 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 备注 这个问题是受到 Max Howell 的 原问题 启发的 : > 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。 解析 解题思路 使用递归交换左右子树 root为空,结束递归 数据操作分析 编码实现 public class LeetCode022…
US-B.Ralph
a year ago

LeetCode-37. 解数独

问题地址 LeetCode每日一题/2020-09-15 LeetCode37. 解数独 问题描述 规则 编写一个程序,通过已填充的空格来解决数独问题。 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 空白格用 '.' 表示。 示例 示例 数独答案(答案被标成红色) 提示 给定的数独序列只包含数字 1-9 和字符 '.' 。 你可以假设给定的数独只有唯一解。 给定数独永远是 9x9 形式的。 解析 解题思路 数据操作分析 编码实现 官方解法 前言 我们可以考虑按照「行优…
US-B.Ralph
a year ago

LeetCode-94. 二叉树的中序遍历

问题地址 LeetCode每日一题/2020-09-14 LeetCode94. 二叉树的中序遍历 问题描述 规则 给定一个二叉树,返回它的中序 遍历。 示例 示例: 输入: 1 \ 2 / 3 输出: 进阶 递归算法很简单,你可以通过迭代算法完成吗? 解析 解题思路 递归 二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。 数据操作分析 根据中序遍历的定义只需要遍历左子树、root、右子树即可 遍历的终止条件是 root==nu…
US-B.Ralph
a year ago

LeetCode-79. 单词搜索

问题地址 LeetCode每日一题/2020-09-13 LeetCode79. 单词搜索 问题描述 规则 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例 示例一: board = , , ] 给定 word = "ABCCED", 返回 true 给定 word = "SEE", 返回 true 给定 word = "ABCB", 返回 false 提示 $board$ 和 $word$ 中只包含大写和小写英文字母。 $1 <=…
US-B.Ralph
a year ago

LeetCode-637. 二叉树的层平均值

问题地址 LeetCode每日一题/2020-09-12 LeetCode637. 二叉树的层平均值 问题描述 规则 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 示例 示例一: 输入: 3 / \ 9 20 / \ 15 7 输出: 解释: 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 。 提示 节点值的范围在32位有符号整数范围内。 解析 解题思路 计算每一层的平均值,需要在搜索中存储每一层数据的和、每一层元素的个数; 遍历结束后每一层的平均值=每一层数据的和/每一层元素的个数; 数据操作分析 计算每一层的平均值,需要在搜索中存储每一层数据…
US-B.Ralph
a year ago

LeetCode-216. 组合总和 III

问题地址 LeetCode每日一题/2020-09-11 LeetCode216. 组合总和 III 问题描述 规则 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明 所有数字都是正整数。 解集不能包含重复的组合。 示例 示例一: 输入: k = 3, n = 7 输出: ] 示例二: 输入: k = 3, n = 9 输出: , , ] 解析 解题思路 今天的题目和前两天的每日一题类似,都可可以尝试用「搜索回溯」的方法来解决。 相似题目: 39. 组合总和 40. 组合总和 II 46. 全排列 47. 全排列 II …
US-B.Ralph
a year ago

LeetCode-40. 组合总和 II

问题地址 LeetCode每日一题/2020-09-10 LeetCode40. 组合总和 II 问题描述 规则 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 示例一: 输入: candidates = , target = 8, 所求解集为: , , , ] 示例二: 输入: candidates = , target = 5, 所求解集为: , ] 解析 解题思路…
US-B.Ralph
a year ago