
力扣
沼泽深处的王
你的理想是我的底线
展开
-
leetcode1111有效括号的嵌套深度java题解(栈)
1.题目有效括号字符串 定义:对于每个左括号,都能找到与之对应的右括号,反之亦然。详情参见题末「有效括号字符串」部分。嵌套深度 depth 定义:即有效括号字符串嵌套的层数,depth(A) 表示有效括号字符串 A 的嵌套深度。详情参见题末「嵌套深度」部分。给你一个「有效括号字符串」 seq,请你将其分成两个不相交的有效括号字符串,A 和 B,并使这两个字符串的深度最小。不相交:每个 se...原创 2020-04-01 15:21:17 · 345 阅读 · 0 评论 -
leetcode231二的幂java题解(数学)
1.题目给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 2的0次方 = 1示例 2:输入: 16输出: true解释: 2的4次方 = 16示例 3:输入: 218输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/power-of-two2.想法第一种:利...原创 2020-03-31 09:51:13 · 212 阅读 · 0 评论 -
leetcode面试题62圆圈中最后剩下的数字java题解(约瑟夫环)
1.题目0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2来源:力...原创 2020-03-30 11:20:19 · 319 阅读 · 1 评论 -
leetcode1162地图分析java题解(动态规划)
1.题目你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个区域之间的距离是 |...原创 2020-03-29 14:42:17 · 958 阅读 · 0 评论 -
leetcode820单词的压缩缩码java题解(子串删除)
1.题目给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串,直到 “#” 结束,来恢复我们之前的单词列表。那么成功对给定单词列表...原创 2020-03-28 13:11:23 · 423 阅读 · 0 评论 -
leetcode剑指offer面试题03数组中重复的数字java题解(鸽巢原理)
1.题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/proble...原创 2020-03-27 15:55:59 · 320 阅读 · 0 评论 -
leetcode120三角形最小路径和java题解(动态规划)
1.题目给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/triangle2.想法可将等腰三...原创 2020-03-27 12:08:50 · 311 阅读 · 0 评论 -
leetcode914卡牌分组java题解(HashMap)
1.题目给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,...原创 2020-03-27 12:00:06 · 208 阅读 · 0 评论 -
leetcode64最小路径和java题解(动态规划)
1.题目给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/m...原创 2020-03-26 10:57:12 · 318 阅读 · 0 评论 -
leetcode63不同路径 IIjava题解(动态规划)
1.题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[[0,0,...原创 2020-03-24 17:23:45 · 381 阅读 · 0 评论 -
leetcode62不同路径java题解(动态规划)
1.题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。...原创 2020-03-24 12:21:42 · 263 阅读 · 0 评论 -
leetcode面试17.16按摩师java题解(动态规划)
1.题目一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2...原创 2020-03-24 11:54:18 · 363 阅读 · 0 评论 -
leetcode213打家劫舍 IIjava题解(动态规划)
1.题目你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释:...原创 2020-02-19 23:47:13 · 252 阅读 · 0 评论 -
leetcode198打家劫舍java题解(动态规划)
1.题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃...原创 2020-02-19 23:38:49 · 523 阅读 · 0 评论 -
leetcode945使数组唯一的最小增量java题解(贪心)
1.题目给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。可以看出 5 次或...原创 2020-03-22 11:18:09 · 151 阅读 · 0 评论 -
leetcode53最大子序列和java题解(贪心)
1.题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray2.想法...原创 2020-02-10 15:09:22 · 213 阅读 · 0 评论 -
leetcode55跳跃游戏java题解(贪心)
1.题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到...原创 2020-02-10 12:52:14 · 476 阅读 · 0 评论 -
leetcode1137第N个泰波那契数java题解(记忆化)
1.题目泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n-th-tribonacci-number2.想法与70爬楼...原创 2020-02-05 00:29:54 · 263 阅读 · 0 评论 -
leetcode509斐波那契数java题解(记忆化)(动态规划)
1.题目斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/proble...原创 2020-02-05 00:26:13 · 391 阅读 · 0 评论 -
leetcode70爬楼梯java题解(记忆化)(动态规划)
1.题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/climbing-stairs2. 想法按着题目的要求,先试算几个,发现有着斐波那契数列的规则,进而验算,确实如此,应该是斐波那契...原创 2020-02-05 00:20:47 · 252 阅读 · 0 评论 -
leetcode75颜色分类java题解(三指针)——荷兰问题(三色国旗问题)
1.题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:你能想出一个仅使用常数空间的一趟扫描算法吗?来源:力扣(LeetCode)链接:https://l...原创 2020-02-12 00:03:58 · 337 阅读 · 0 评论 -
leetcode19删除链表的倒数第N个节点java题解(双指针)
1.题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?来源:力扣(LeetCode)链接:https://leetcode-c...原创 2020-02-06 23:19:50 · 184 阅读 · 0 评论 -
leetcode11盛最多水的容器java题解(双指针)
1.题目给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表...原创 2020-02-06 00:11:07 · 275 阅读 · 0 评论 -
leetcode160相交链表java题解(快慢指针)
1.题目编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 ...原创 2020-03-23 17:24:43 · 119 阅读 · 0 评论 -
leetcode142环形链表 IIjava题解(快慢指针)
1.题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1...原创 2020-03-23 16:30:08 · 263 阅读 · 0 评论 -
leetcode141环形链表java题解(快慢指针)
1.题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true...原创 2020-03-23 15:30:08 · 149 阅读 · 0 评论 -
leetcode876链表的中间结点java题解(快慢指针)
1.题目给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.n...原创 2020-03-23 15:24:26 · 248 阅读 · 0 评论 -
leetcode287寻找重复数java题解(Hash)(排序)(二分)(快慢指针)
1.题目给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:1.不能更改原数组(假设数组是只读的)。2.只能使用额外的 O(1) 的空间。3.时间复杂度小于 ...原创 2020-02-13 16:26:32 · 270 阅读 · 0 评论 -
leetcode169多数元素java题解(Hash)(排序)(Boyer-Moore投票)
1.题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority...原创 2020-02-13 11:59:51 · 182 阅读 · 0 评论 -
leetcode215数组中的第K个最大元素java题解(排序)
1.题目在未排序的数组中找到第 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 ≤ 数组的长度。来源:力扣(LeetCode)...原创 2020-02-13 23:00:39 · 134 阅读 · 0 评论 -
leetcode365水壶问题java题解(数学)(最大公约数)
1.题目有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1: (From the famous “Die Hard” example)输入: x = 3, y =...原创 2020-03-21 20:42:20 · 337 阅读 · 0 评论 -
leetcode260只出现一次的数字 IIIjava题解(Hash)(位运算)
1.题目给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number-ii...原创 2020-02-13 01:34:30 · 199 阅读 · 0 评论 -
leetcode136只出现一次的数字的java题解(Hash)(异或)
1.题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/si...原创 2020-02-12 11:35:40 · 307 阅读 · 0 评论 -
leetcode137只出现一次的数字 IIjava题解(Hash)(三进制)
1.题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2] 输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob...原创 2020-02-12 22:24:33 · 251 阅读 · 1 评论 -
leetcode2两数相加java题解(十进制)
1.题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-num...原创 2020-02-02 18:41:16 · 365 阅读 · 0 评论 -
leetcode283移动零java题解(计数法)
1.题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明: 必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/move-zeroes2.想法(1)用冒泡...原创 2020-02-05 12:28:52 · 181 阅读 · 0 评论 -
leetcode20有效的括号java题解(栈)
1.题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses2.想法先创建一个动...原创 2020-02-04 18:38:33 · 183 阅读 · 0 评论 -
LeetCode刷题顺序
1.为找工作而刷的力扣,按知乎推荐先刷热题100+精选TOP面试题(1)2.两数相加原创 2020-02-02 18:42:48 · 816 阅读 · 0 评论