
LeetCode
文章平均质量分 53
liujunzxcv
这个作者很懒,什么都没留下…
展开
-
leetcode 78. 子集 击败99%
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]] static List<List<Integer>> lists; public static ...原创 2020-02-15 14:27:58 · 229 阅读 · 0 评论 -
leetcode 77. 组合击败99.47%
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]static List<List<Integer>> lists; public static List<List<Integer>...原创 2020-02-15 13:35:05 · 296 阅读 · 0 评论 -
leetcode 75. 颜色分类 击败100%
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计...原创 2020-02-14 17:41:35 · 143 阅读 · 0 评论 -
leetcode 74. 搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [...原创 2020-02-14 15:01:33 · 159 阅读 · 0 评论 -
leetcode 73. 矩阵置零 击败100%
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],...原创 2020-02-13 22:54:21 · 106 阅读 · 0 评论 -
leetcode 64. 最小路径和 击败98%
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。在二维动态规划下,优化成一维来做 public static int minPathSum(int[][] gri...原创 2020-02-13 17:19:19 · 106 阅读 · 0 评论 -
leetcode 63. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[[0,0,0],[0...原创 2020-02-12 17:55:14 · 102 阅读 · 0 评论 -
leetcode 62. 不同路径 击败100%
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向...原创 2020-02-12 17:44:01 · 143 阅读 · 0 评论 -
leetcode 61. 旋转链表 击败99.98%
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步:5->1->2->3->4->NULL向右旋转 2 步: 4->5-&...原创 2020-02-11 20:13:58 · 97 阅读 · 0 评论 -
leetcode 60. 第k个排列 击败100%
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123” “132” “213” “231” “312” “321” 给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。 给定 k 的范围是[1, n!]。 示例 1:输入: n = 3, k = 3 输出: “21...原创 2020-02-11 17:14:43 · 138 阅读 · 0 评论 -
leetcode 59. 螺旋矩阵 II 击败20.83%
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3 输出: [[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ] ] public int[][] generateMatrix(int n) { if (n == 1) { int[][] A = new in...原创 2020-02-10 17:54:19 · 131 阅读 · 0 评论 -
leetcode56. 合并区间 击败70%
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间[1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2:输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。publ...原创 2020-02-07 16:40:46 · 117 阅读 · 0 评论 -
leetcode 55. 跳跃游戏 击败99.98%
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3步到达最后一个位置。 示例 2:输入: [3,2,1,0,4] 输出: false 解释: 无论怎样,你总会到...原创 2020-02-07 11:52:52 · 139 阅读 · 0 评论 -
leetcode 49. 字母异位词分组 击败86%
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”], 输出: [[“ate”,“eat”,“tea”], [“nat”,“tan”], [“bat”] ] 说明:所有输入均为小写字母。 不考虑答案输出的顺序。//用排序后的字符串作为key,相同...原创 2020-02-04 18:30:03 · 102 阅读 · 0 评论 -
leetcode 48. 旋转图像 击败100%
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ],原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ] 示例...原创 2020-02-04 15:37:05 · 144 阅读 · 0 评论 -
leetcode 47. 全排列 II 击败96.5%
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] //思路就是通过递归做深度搜索,先对数组排序 //每次做深度搜索之前,先判断这轮循环是不是有相同元素做过递归,比如num[i]==num[i-1] && !visit[i],达到剪枝的目的 List<...原创 2020-02-02 15:36:14 · 109 阅读 · 0 评论 -
leetcode 43. 字符串相乘 击败83%
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2:输入: num1 = “123”, num2 = “456” 输出: “56088” 说明:num1 和 num2 的长度小于110。 num1 和 num2 只包含数字 ...原创 2020-02-02 14:51:47 · 104 阅读 · 0 评论 -
leetcode 40. 组合总和 II 击败98%
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8, 所求解集为: [ ...原创 2020-01-31 15:47:28 · 98 阅读 · 0 评论 -
leetcode 39. 组合总和 击败98.03%
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = 7, 所求解集为: [ ...原创 2020-01-31 13:26:51 · 105 阅读 · 0 评论 -
leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 击败100%
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8 输出: [3,4] 示例 2:输入: nums = [5,7,7,8,8,10], tar...原创 2020-01-28 19:29:07 · 101 阅读 · 0 评论 -
leetcode 31. 下一个排列 击败99.97%
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1 public static void nextPer...原创 2020-01-28 17:21:40 · 114 阅读 · 0 评论 -
leetcode 29. 两数相除 击败100%
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3 输出: 3 示例 2:输入: dividend = 7, divisor = -3 输出: -2 说明:被除数和除数均为 32 位有符...原创 2020-01-27 15:08:18 · 141 阅读 · 0 评论 -
leetcode 24. 两两交换链表中的节点 击败100%
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.public ListNode swapPairs(ListNode head) { if(head == null || head.next =...原创 2020-01-25 22:09:17 · 92 阅读 · 0 评论 -
leetcode 22. 括号生成 击败99.57%
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ]static List<String> lists; static public List<String>...原创 2020-01-25 17:09:32 · 148 阅读 · 0 评论 -
leetcode 19. 删除链表的倒数第N个节点 击败100%
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?static int num; public static ListNo...原创 2020-01-24 23:33:35 · 84 阅读 · 0 评论 -
leetcode 481. 神奇字符串 击败100%
神奇的字符串 S 只包含 ‘1’ 和 ‘2’,并遵守以下规则:字符串 S 是神奇的,因为串联字符 ‘1’ 和 ‘2’ 的连续出现次数会生成字符串 S 本身。字符串 S 的前几个元素如下:S = “1221121221221121122 …”如果我们将 S 中连续的 1 和 2 进行分组,它将变成:1 22 11 2 1 22 1 22 11 2 11 22 …并且每个组中 ‘1’ 或 ...原创 2020-01-23 22:09:41 · 178 阅读 · 0 评论 -
478. 在圆内随机生成点 击败97.76%
给定圆的半径和圆心的 x、y 坐标,写一个在圆中产生均匀随机点的函数 randPoint 。说明:输入值和输出值都将是浮点数。 圆的半径和圆心的 x、y 坐标将作为参数传递给类的构造函数。 圆周上的点也认为是在圆中。 randPoint返回一个包含随机点的x坐标和y坐标的大小为2的数组。 示例 1:输入: [“Solution”,“randPoint”,“randPoint”,“ran...原创 2020-01-21 13:45:58 · 132 阅读 · 0 评论 -
leetcode 477. 汉明距离总和 击败97.79%
两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。示例:输入: 4, 14, 2输出: 6解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系) 所以答案为:HammingDistance(4, 14) + HammingDistance(4, 2) + Ham...原创 2020-01-20 23:34:24 · 96 阅读 · 0 评论 -
LeetCode 18. 四数之和 击败82%
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a +b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为: [ ...原创 2020-01-18 16:26:21 · 91 阅读 · 0 评论 -
leetcode 474. 一和零 击败99.3%
在计算机界中,我们总是追求用有限的资源获取最大的收益。现在,假设你分别支配着 m 个 0 和 n 个 1。另外,还有一个仅包含 0 和 1 字符串的数组。你的任务是使用给定的 m 个 0 和 n 个 1 ,找到能拼出存在于数组中的字符串的最大数量。每个 0 和 1 至多被使用一次。注意:给定 0 和 1 的数量都不会超过 100。 给定字符串数组的长度不会超过 600。 示例 1:输入...原创 2020-01-16 23:47:05 · 99 阅读 · 0 评论 -
leetcode 473. 火柴拼正方形 通过快速判断击败100%
还记得童话《卖火柴的小女孩》吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法。不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到。输入为小女孩拥有火柴的数目,每根火柴用其长度表示。输出即为是否能用所有的火柴拼成正方形。示例 1:输入: [1,1,2,2,2] 输出: true解释: 能拼成一个边长为2的正方形,每边两根火柴。 示例 2:输入: [3,...原创 2020-01-15 22:58:51 · 150 阅读 · 0 评论 -
LeetCode 399. 除法求值
给出方程式 A / B = k, 其中 A 和 B 均为代表字符串的变量, k 是一个浮点型数字。根据已知方程式求解问题,并返回计算结果。如果结果不存在,则返回 -1.0。示例 : 给定 a / b = 2.0, b / c = 3.0 问题: a / c = ?, b / a = ?, a / e = ?,a / a = ?, x / x = ? 返回 [6.0, 0.5, -1.0, ...原创 2019-11-02 18:55:14 · 184 阅读 · 0 评论 -
leetcode 199. 二叉树的右视图
遍历时必定要从右子节点开始,主要是要解决拿到每层最右边节点的问题。在深度遍历时递归函数传进去层数,每往下层递归时层数+1.用一个数组记录每层有没有被访问过,只要是该层第一次访问,由于是先访问右子节点,所以一定是每层最右边的class Solution { List<Integer> list; boolean A[]; public List<In...原创 2019-07-13 18:22:35 · 133 阅读 · 0 评论 -
leetcode 12. 整数转罗马数字
每一位的处理都是一样的逻辑,换了两个字母而已,遇到4、9特殊处理一下即可class Solution { public static String intToRoman(int num) { String s = num + ""; StringBuilder sb = new StringBuilder(); if (s.length()...原创 2019-07-13 18:37:03 · 87 阅读 · 0 评论 -
leetcode 215 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。1.直接建立大根堆,然后从大根堆中拿...原创 2019-06-30 23:48:01 · 107 阅读 · 0 评论 -
leetcde 17. 电话号码的字母组合
每个数字对应多个字母,要穷尽所有的组合可能,采用多叉树的结构,每遍历一个数字,在多叉树中就多了一层,即在当前的所有叶子节点下面再加上新数字对应的所有字母,形成新的多叉叶子节点。将多叉树建立出来之后,再通过深度优先遍历整个树,遍历的时候每到一个叶子节点,就形成了从根节点到当前叶子节点的一个解答,遍历完之后的结果集就是答案。使用一个stringbuilder维持当前的从根节点到当前节点形成...原创 2019-07-20 15:38:46 · 128 阅读 · 0 评论 -
leetcode 54. 螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,1...原创 2019-07-27 16:44:48 · 112 阅读 · 0 评论 -
leetcode 394. 字符串解码
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] ...原创 2019-10-10 12:13:37 · 319 阅读 · 0 评论 -
188. Best Time to Buy and Sell Stock IV(买卖股票的最佳时机 IV)
假设你有一个数组,其中第 i 个元素是第 i 天给定股票的价格。设计一个算法来找到最大的利润。您最多可以完成 k 笔交易。注意:你不可以同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。这道题不像前面的不限交易次数,要求交易次数在k次以内,那么就不能有获利就交易,选择交易时机比较关键,比如[2,3,1,2,6,2,6,7],限制交易2次,如果取到[1,7],那么就漏掉了中间两...原创 2018-04-04 00:10:35 · 461 阅读 · 0 评论 -
leetCode 99. Recover Binary Search Tree
Two elements of a binary search tree (BST) are swapped by mistake.Recover the tree without changing its structure.Note: A solution using O(n) space is pretty straight forward. Could you devise a const原创 2017-09-28 16:57:38 · 161 阅读 · 0 评论