递归分治
Jessio
这个作者很懒,什么都没留下…
展开
-
leetcode习题集——133. 克隆图
题目给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node])。示例:输入:{“KaTeX parse error: Expected '}', got 'EOF' at end of input: …"neighbors":[{"id”:“2”,“neighbors”:[{“KaTeX parse er...原创 2019-06-28 16:04:39 · 104 阅读 · 0 评论 -
leetcode习题集——111. 二叉树的最小深度
题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],算法public class P111 { int minHeight = Integer.MAX_VALUE; public int minDepth(TreeNode ...原创 2019-06-14 15:53:12 · 185 阅读 · 0 评论 -
leetcode习题集——110. 平衡二叉树
题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4]返回 false 。算法public class P110 { ...原创 2019-06-14 15:38:07 · 345 阅读 · 0 评论 -
leetcode习题集——109. 有序链表转换二叉搜索树
题目给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:算法public class P109_2 {...原创 2019-06-14 15:26:23 · 312 阅读 · 0 评论 -
leetcode习题集——108. 将有序数组转换为二叉搜索树
题目将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:算法class Solution { public TreeNode s...原创 2019-06-13 10:43:52 · 127 阅读 · 0 评论 -
leetcode习题集——107. 二叉树的层次遍历 II
题目给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]算法public class P107 { public List<List<Integer>> l...原创 2019-06-13 09:50:36 · 198 阅读 · 0 评论 -
leetcode习题集——106. 从中序与后序遍历序列构造二叉树
题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:算法public class P106 { public TreeNode buildTree(int[] inorder, int[] post...原创 2019-06-13 09:42:27 · 523 阅读 · 0 评论 -
leetcode习题集——105. 从前序与中序遍历序列构造二叉树
题目根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]算法public TreeNode buildTree(int [] preorder, int [] inorder) { if(preorder.lengt...原创 2019-06-12 15:55:36 · 164 阅读 · 0 评论 -
leetcode习题集——103. 二叉树的锯齿形层次遍历
题目给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。算法public class P103 { public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>...原创 2019-06-12 15:29:32 · 195 阅读 · 0 评论 -
leetcode习题集——89. 格雷编码
题目格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 - ...原创 2019-06-03 16:42:18 · 199 阅读 · 0 评论 -
leetcode习题集——112. 路径总和
题目给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...原创 2019-06-15 10:05:33 · 110 阅读 · 0 评论 -
leetcode习题集——113. 路径总和 II
题目给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1...原创 2019-06-15 10:10:51 · 106 阅读 · 0 评论 -
leetcode习题集——130. 被围绕的区域
题目给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘...原创 2019-06-24 15:08:41 · 608 阅读 · 0 评论 -
leetcode习题集——129. 求根到叶子节点数字之和
题目给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3]1/ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到...原创 2019-06-23 15:15:29 · 114 阅读 · 0 评论 -
leetcode习题集——131. 分割回文串
题目给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: “aab”输出:[[“aa”,“b”],[“a”,“a”,“b”]]算法class Solution { List<List<String>> result = new ArrayList<>(); public...原创 2019-06-25 16:00:43 · 317 阅读 · 0 评论 -
leetcode习题集——118. 杨辉三角
题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]算法public class P118 { public List<List<Integer>> genera...原创 2019-06-17 11:58:25 · 179 阅读 · 0 评论 -
leetcode习题集——102. 二叉树的层次遍历
题目给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],算法public class P102 { /** * 层序遍历 * 递归 */ public List<List<Integer>> levelOrder(Tree...原创 2019-06-11 15:46:05 · 515 阅读 · 0 评论 -
leetcode习题集——101. 对称二叉树
题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:算法public class P101 { public boolean isSymmetric(TreeNode root) { return check(root,root); ...原创 2019-06-11 14:49:24 · 127 阅读 · 0 评论 -
leetcode习题集——93. 复原IP地址
题目给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]算法public class P93 { List<String> rList = new ArrayList<>(); public List<...原创 2019-06-04 17:29:16 · 910 阅读 · 0 评论 -
leetcode习题集——114. 二叉树展开为链表
题目给定一个二叉树,原地将它展开为链表。例如,给定二叉树将其展开为:算法public class P114 { public void flatten(TreeNode root) { convertNode(root,null); return; } private TreeNode convertNode(TreeNode...原创 2019-06-15 10:48:17 · 147 阅读 · 0 评论 -
leetcode习题集——84. 柱状图中最大的矩形
题目给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。算法1public class P84 { public int largestRec...原创 2019-05-28 10:57:48 · 462 阅读 · 0 评论 -
leetcode习题集——79. 单词搜索
题目给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 t...原创 2019-05-22 19:39:48 · 152 阅读 · 0 评论 -
leetcode习题集——17. 电话号码的字母组合
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].算法public class P17_LetterCombinationsofaPhoneNumber ...原创 2019-03-16 10:35:44 · 176 阅读 · 0 评论 -
leetcode习题集——22. 括号生成(括号表达式)
题目给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]算法1public class P22_GenerateParentheses2 { public List<String> gener...原创 2019-03-19 20:02:41 · 267 阅读 · 0 评论 -
leetcode习题集——23. 合并K个排序链表
习题合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6算法public class P23_MergeKSortedLists { public ListNode m...原创 2019-03-20 17:16:06 · 120 阅读 · 0 评论 -
leetcode习题集——24. 两两交换链表中的节点
题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.算法1public class P24_SwapNodesinPairs { public ListNode swapPairs(ListNode...原创 2019-03-21 09:53:38 · 199 阅读 · 0 评论 -
leetcode习题集——25. k个一组翻转链表
题目给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->...原创 2019-03-21 11:11:40 · 125 阅读 · 0 评论 -
leetcode习题集——40. 组合总和 II
题目给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:...原创 2019-04-10 17:30:00 · 141 阅读 · 0 评论 -
leetcode习题集——39. 组合总和
题目给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[...原创 2019-04-10 17:08:24 · 126 阅读 · 0 评论 -
leetcode习题集——37. 解数独
题目编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 '.' 表示。解:Note:给定的数独序列只包含数字 1-9 和字符 '.' 。你可以假设给定的数独只有唯一解。给定数独永远是 9x9 形式的。算...原创 2019-04-06 13:22:41 · 163 阅读 · 0 评论 -
leetcode习题集——14. 最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。算法1public class P14Long...原创 2019-03-13 15:30:10 · 105 阅读 · 0 评论 -
leetcode习题集——38. 报数
题目报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一...原创 2019-04-08 21:18:57 · 151 阅读 · 0 评论 -
leetcode习题集——47. 全排列 II
题目给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]算法1public class P47_PermutationsII2 { List<List<Integer>> rlist = new ArrayList<>(); publi...原创 2019-04-15 21:44:12 · 194 阅读 · 0 评论 -
leetcode习题集——74. 搜索二维矩阵
题目编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]target = 3输出: true示例 2:输入:matri...原创 2019-05-16 20:20:16 · 319 阅读 · 0 评论 -
leetcode习题集——81. 搜索旋转排序数组 II
题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 2:输入: nums = ...原创 2019-05-24 16:12:13 · 114 阅读 · 0 评论 -
leetcode习题集——77. 组合
题目给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]算法public class P77 { List<List<Integer>> rList = new ArrayList<>...原创 2019-05-19 14:20:17 · 134 阅读 · 0 评论 -
leetcode习题集——70. 爬楼梯
题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 +...原创 2019-05-08 10:51:15 · 105 阅读 · 0 评论 -
leetcode习题集——50. Pow(x, n)
题目实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0...翻译 2019-04-19 13:38:41 · 136 阅读 · 0 评论 -
leetcode习题集——52. N皇后 II
题目n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[[".Q...原创 2019-04-22 20:32:58 · 198 阅读 · 0 评论 -
leetcode习题集——46. 全排列
题目给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]算法1public class P46_Permutations { List<List<Integer>> rlist = new ArrayLi...原创 2019-04-14 21:37:57 · 136 阅读 · 0 评论