
LeetCode
普通网友
这个作者很懒,什么都没留下…
展开
-
Java实现 LeetCode 838 推多米诺(暴力模拟)
838. 推多米诺一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立。在开始时,我们同时把一些多米诺骨牌向左或向右推。每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。同样地,倒向右边的多米诺骨牌也会推动竖立在其右侧的相邻多米诺骨牌。如果同时有多米诺骨牌落在一张垂直竖立的多米诺骨牌的两边,由于受力平衡, 该骨牌仍然保持不变。就这个问题而言,我们会认为正在下降的多米诺骨牌不会对其它正在下降或已经下降的多米诺骨牌施加额外的力。给定表示初始状态的字符串 “S” 。如果第 i 张多米原创 2020-05-11 11:56:27 · 10294 阅读 · 13 评论 -
Java实现 LeetCode 837 新21点(DP)
837. 新21点爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?示例 1:输入:N = 10, K = 1, W = 10输出:1.00000说明:爱丽丝得到一张卡,然后停止。示例 2:输入:N原创 2020-05-11 11:55:29 · 11100 阅读 · 28 评论 -
Java实现 LeetCode 836 矩形重叠(暴力)
836. 矩形重叠矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1]输出:false提示:两个矩形原创 2020-05-11 11:54:26 · 9950 阅读 · 4 评论 -
Java实现 LeetCode 835 图像重叠(暴力)
835. 图像重叠给出两个图像 A 和 B ,A 和 B 为大小相同的二维正方形矩阵。(并且为二进制矩阵,只包含0和1)。我们转换其中一个图像,向左,右,上,或下滑动任何数量的单位,并把它放在另一个图像的上面。之后,该转换的重叠是指两个图像都具有 1 的位置的数目。(请注意,转换不包括向任何方向旋转。)最大可能的重叠是什么?示例 1:输入:A = [[1,1,0],[0,1,0],[0,1,0]]B = [[0,0,0],[0,1,1],[0,0,1]]输出:3解释: 将 A 向右原创 2020-05-11 11:51:57 · 9719 阅读 · 9 评论 -
Java实现 LeetCode 834 树中距离之和(DFS+分析)
834. 树中距离之和给定一个无向、连通的树。树中有 N 个标记为 0…N-1 的节点以及 N-1 条边 。第 i 条边连接节点 edges[i][0] 和 edges[i][1] 。返回一个表示节点 i 与其他所有节点距离之和的列表 ans。示例 1:输入: N = 6, edges = [[0,1],[0,2],[2,3],[2,4],[2,5]]输出: [8,12,6,10,10,10]解释:如下为给定的树的示意图:0/ 1 2/|3 4 5我们可以计算出 dist(0原创 2020-05-10 22:43:37 · 9555 阅读 · 7 评论 -
Java实现 LeetCode 833 字符串中的查找与替换(暴力模拟)
833. 字符串中的查找与替换对于某些字符串 S,我们将执行一些替换操作,用新的字母组替换原有的字母组(不一定大小相同)。每个替换操作具有 3 个参数:起始索引 i,源字 x 和目标字 y。规则是如果 x 从原始字符串 S 中的位置 i 开始,那么我们将用 y 替换出现的 x。如果没有,我们什么都不做。举个例子,如果我们有 S = “abcd” 并且我们有一些替换操作 i = 2,x = “cd”,y = “ffff”,那么因为 “cd” 从原始字符串 S 中的位置 2 开始,我们将用 “ffff”原创 2020-05-10 22:42:06 · 9566 阅读 · 8 评论 -
Java实现 LeetCode 832 翻转图像(位运算)
832. 翻转图像给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入: [[1,1,0],[1,0,1],[0,0,0]]输出: [[1,0,0],[0,1,0],[1,1,1]]解释: 首先翻转每一行: [[0,原创 2020-05-10 22:41:21 · 9334 阅读 · 2 评论 -
Java实现 LeetCode 831 隐藏个人信息(暴力)
831. 隐藏个人信息给你一条个人信息字符串 S,它可能是一个 邮箱地址 ,也可能是一串 电话号码 。我们将隐藏它的隐私信息,通过如下规则:电子邮箱定义名称 name 是长度大于等于 2 (length ≥ 2),并且只包含小写字母 a-z 和大写字母 A-Z 的字符串。电子邮箱地址由名称 name 开头,紧接着是符号 ‘@’,后面接着一个名称 name,再接着一个点号 ‘.’,然后是一个名称 name。电子邮箱地址确定为有效的,并且格式是 “name1@name2.name3”。为了隐藏原创 2020-05-10 22:40:27 · 9815 阅读 · 5 评论 -
Java实现 LeetCode 830 较大分组的位置(暴力模拟)
830. 较大分组的位置在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 S = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。我们称所有包含大于或等于三个连续字符的分组为较大分组。找到每一个较大分组的起始和终止位置。最终结果按照字典顺序输出。示例 1:输入: “abbxxxxzzy”输出: [[3,6]]解释: “xxxx” 是一个起始于 3 且终止于 6 的较大分组。示例 2:原创 2020-05-10 21:25:43 · 9404 阅读 · 5 评论 -
Java实现 LeetCode 828 统计子串中的唯一字符(暴力+转数组)
828. 统计子串中的唯一字符我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。例如:s = “LEETCODE” ,则其中 “L”, “T”,“C”,“O”,“D” 都是唯一字符,因为它们只出现一次,所以 countUniqueChars(s) = 5 。本题将会给你一个字符串 s ,我们需要返回 countUniqueChars(t) 的总和,其中 t 是 s 的子字符串。注意,某些子字符串可能是重复的,但你统计时也必须算上这些重复的原创 2020-05-10 21:04:16 · 9476 阅读 · 6 评论 -
Java实现 LeetCode 827 最大人工岛(DFS+暴力模拟)
827. 最大人工岛在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地。进行填海之后,地图上最大的岛屿面积是多少?(上、下、左、右四个方向相连的 1 可形成岛屿)示例 1:输入: [[1, 0], [0, 1]]输出: 3解释: 将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。示例 2:输入: [[1, 1], [1, 0]]输出: 4解释: 将一格0变成1,岛屿的面积扩大为 4。示例 3:输入: [[1, 1], [1, 1]]输出:原创 2020-05-10 20:41:31 · 10424 阅读 · 7 评论 -
Java实现 LeetCode 826 安排工作以达到最大收益(暴力DP)
826. 安排工作以达到最大收益有一些工作:difficulty[i] 表示第i个工作的难度,profit[i]表示第i个工作的收益。现在我们有一些工人。worker[i]是第i个工人的能力,即该工人只能完成难度小于等于worker[i]的工作。每一个工人都最多只能安排一个工作,但是一个工作可以完成多次。举个例子,如果3个工人都尝试完成一份报酬为1的同样工作,那么总收益为 $3。如果一个工人不能完成任何工作,他的收益为 $0 。我们能得到的最大收益是多少?示例:输入: difficulty =原创 2020-05-10 15:19:31 · 9610 阅读 · 10 评论 -
Java实现 LeetCode 825 适龄的朋友(暴力)
825. 适龄的朋友人们会互相发送好友请求,现在给定一个包含有他们年龄的数组,ages[i] 表示第 i 个人的年龄。当满足以下条件时,A 不能给 B(A、B不为同一人)发送好友请求:age[B] <= 0.5 * age[A] + 7age[B] > age[A]age[B] > 100 && age[A] < 100否则,A 可以给 B 发送好友请求。注意如果 A 向 B 发出了请求,不等于 B 也一定会向 A 发出请求。而且,人们不会给自己发送好友原创 2020-05-10 15:17:06 · 9456 阅读 · 8 评论 -
Java实现 LeetCode 824 山羊拉丁文(暴力)
824. 山羊拉丁文给定一个由空格分割单词的句子 S。每个单词只包含大写或小写字母。我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。例如,单词"apple"变为"applema"。如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。例如,单词"goat"变为"oatgma"。根据单词在句子中的索引,在单词原创 2020-05-10 15:16:13 · 9229 阅读 · 6 评论 -
Java实现 LeetCode 821 字符的最短距离(暴力)
821. 字符的最短距离给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。示例 1:输入: S = “loveleetcode”, C = ‘e’输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]说明:字符串 S 的长度范围为 [1, 10000]。C 是一个单字符,且保证是字符串 S 里的字符。S 和 C 中的所有字母均为小写字母。class Solution { public in原创 2020-05-10 11:12:22 · 9269 阅读 · 9 评论 -
Java实现 LeetCode 823 带因子的二叉树(DP)
823. 带因子的二叉树给出一个含有不重复整数元素的数组,每个整数均大于 1。我们用这些整数来构建二叉树,每个整数可以使用任意次数。其中:每个非叶结点的值应等于它的两个子结点的值的乘积。满足条件的二叉树一共有多少个?返回的结果应模除 10 ** 9 + 7。示例 1:输入: A = [2, 4]输出: 3解释: 我们可以得到这些二叉树: [2], [4], [4, 2, 2]示例 2:输入: A = [2, 4, 5, 10]输出: 7解释: 我们可以得到这些二叉树: [2], [4原创 2020-05-10 11:11:57 · 9306 阅读 · 5 评论 -
Java实现 LeetCode 822 翻转卡片游戏(暴力)
822. 翻转卡片游戏在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。我们可以先翻转任意张卡片,然后选择其中一张卡片。如果选中的那张卡片背面的数字 X 与任意一张卡片的正面的数字都不同,那么这个数字是我们想要的数字。哪个数是这些想要的数字中最小的数(找到这些数中的最小值)呢?如果没有一个数字符合要求的,输出 0。其中, fronts[i] 和 backs[i] 分别代表第 i 张卡片的正面和背面的数字。如果我们通过翻转卡片来交换正面与背面上的数,那么当原创 2020-05-10 11:12:04 · 10050 阅读 · 3 评论 -
Java实现 LeetCode 820 单词的压缩编码(暴力)
820. 单词的压缩编码给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串,直到 “#” 结束,来恢复我们之前的单词列表。那么成功对给定单词列表进行编码的最小字符串长度是多少呢?示例:输入: words = [“time”, “me”,原创 2020-05-10 11:12:27 · 10336 阅读 · 7 评论 -
Java实现 LeetCode 819 最常见的单词(暴力)
819. 最常见的单词给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入:paragraph = “Bob hit a ball, the hit BALL flew far after it was hit.”banned = [“hit”]输出: “ball”解释:“原创 2020-05-10 11:12:34 · 9366 阅读 · 5 评论 -
Java实现 LeetCode 817 链表组件(暴力)
817. 链表组件给定一个链表(链表结点包含一个整型值)的头结点 head。同时给定列表 G,该列表是上述链表中整型值的一个子集。返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 G 中)构成的集合。示例 1:输入:head: 0->1->2->3G = [0, 1, 3]输出: 2解释:链表中,0 和 1 是相连接的,且 G 中不包含 2,所以 [0, 1] 是 G 的一个组件,同理 [3] 也是一个组件,故返回 2。示例原创 2020-05-09 21:15:17 · 9162 阅读 · 9 评论 -
Java实现 LeetCode 816 模糊坐标(暴力)
816. 模糊坐标我们有一些二维坐标,如 “(1, 3)” 或 “(2, 0.5)”,然后我们移除所有逗号,小数点和空格,得到一个字符串S。返回所有可能的原始字符串到一个列表中。原始的坐标表示法不会存在多余的零,所以不会出现类似于"00", “0.0”, “0.00”, “1.0”, “001”, "00.01"或一些其他更小的数来表示坐标。此外,一个小数点前至少存在一个数,所以也不会出现“.1”形式的数字。最后返回的列表可以是任意顺序的。而且注意返回的两个数字中间(逗号之后)都有一个空格。示例 1原创 2020-05-09 14:55:25 · 9636 阅读 · 6 评论 -
Java实现 LeetCode 815 公交路线(创建关系+BFS)
815. 公交路线我们有一系列公交路线。每一条路线 routes[i] 上都有一辆公交车在上面循环行驶。例如,有一条路线 routes[0] = [1, 5, 7],表示第一辆 (下标为0) 公交车会一直按照 1->5->7->1->5->7->1->… 的车站路线行驶。假设我们从 S 车站开始(初始时不在公交车上),要去往 T 站。 期间仅可乘坐公交车,求出最少乘坐的公交车数量。返回 -1 表示不可能到达终点车站。示例:输入:routes = [[1,原创 2020-05-09 14:38:02 · 9521 阅读 · 5 评论 -
Java实现 LeetCode 814 二叉树剪枝 (遍历树)
814. 二叉树剪枝给定二叉树根结点 root ,此外树的每个结点的值要么是 0,要么是 1。返回移除了所有不包含 1 的子树的原二叉树。( 节点 X 的子树为 X 本身,以及所有 X 的后代。)示例1:输入: [1,null,0,0,1]输出: [1,null,0,null,1]解释:只有红色节点满足条件“所有不包含 1 的子树”。右图为返回的答案。示例2:输入: [1,0,1,0,0,0,1]输出: [1,null,1,null,1]示例3:输入: [1,1,0,1,1,原创 2020-05-09 13:08:43 · 9854 阅读 · 3 评论 -
Java实现 LeetCode 813 最大平均值和的分组 (DFS+DP记忆化搜索)
813. 最大平均值和的分组我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。计算我们所能得到的最大分数是多少。注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。示例:输入:A = [9,1,2,3,9]K = 3输出: 20解释:A 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9 + (1 + 2 + 3) / 3 + 9 = 20.我们也可以把 A 分成[9, 1], [2], [3, 9原创 2020-05-09 12:16:44 · 9284 阅读 · 10 评论 -
海伦公式和鞋带公式求三角形的面积
鞋带公式S=|(x1 * y2 + x2 * y3 + x3 * y1 - y1 * x2 - y2 * x3 - y3 * x1)|/2海伦公式这里是个人笔记用,百度上很多都是和你扯一堆大道理,然后告诉你乱七八糟的公式,当作笔记,简单记一下,(●ˇ∀ˇ●)...原创 2020-05-09 11:39:59 · 9957 阅读 · 10 评论 -
Java实现 LeetCode 812 最大三角形面积 (暴力)
812. 最大三角形面积给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。示例:输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]输出: 2解释:这五个点如下图所示。组成的橙色三角形是最大的,面积为2。注意:3 <= points.length <= 50.不存在重复的点。-50 <= points[i][j] <= 50.结果误差值在 10^-6 以内都认为是正确答案。class Solut原创 2020-05-09 11:34:53 · 9296 阅读 · 9 评论 -
Java实现 LeetCode 811 子域名访问计数 (暴力)
811. 子域名访问计数一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时访问了其父域名"leetcode.com"以及顶级域名 “com”。给定一个带访问次数和域名的组合,要求分别计算每个域名被访问的次数。其格式为访问次数+空格+地址,例如:“9001 discuss.lee原创 2020-05-09 11:22:01 · 9472 阅读 · 7 评论 -
Java实现 LeetCode 810 黑板异或游戏 (分析)
810. 黑板异或游戏一个黑板上写着一个非负整数数组 nums[i] 。小红和小明轮流从黑板上擦掉一个数字,小红先手。如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败。 (另外,如果只剩一个数字,按位异或运算得到它本身;如果无数字剩余,按位异或运算结果为 0。)换种说法就是,轮到某个玩家时,如果当前黑板上所有数字按位异或运算结果等于 0,这个玩家获胜。假设两个玩家每步都使用最优解,当且仅当小红获胜时返回 true。示例:输入: nums = [1, 1, 2原创 2020-05-09 11:01:01 · 9261 阅读 · 10 评论 -
Java实现 LeetCode 809 情感丰富的文字 (暴力)
809. 情感丰富的文字有时候人们会用重复写一些字母来表示额外的感受,比如 “hello” -> “heeellooo”, “hi” -> “hiii”。我们将相邻字母都相同的一串字符定义为相同字母组,例如:“h”, “eee”, “ll”, “ooo”。对于一个给定的字符串 S ,如果另一个单词能够通过将一些字母组扩张从而使其和 S 相同,我们将这个单词定义为可扩张的(stretchy)。扩张操作定义如下:选择一个字母组(包含字母 c ),然后往其中添加相同的字母 c 使其长度达到 3 或原创 2020-05-08 21:50:54 · 9290 阅读 · 5 评论 -
Java实现 LeetCode 808 分汤 (暴力模拟)
808. 分汤有 A 和 B 两种类型的汤。一开始每种类型的汤有 N 毫升。有四种分配操作:提供 100ml 的汤A 和 0ml 的汤B。提供 75ml 的汤A 和 25ml 的汤B。提供 50ml 的汤A 和 50ml 的汤B。提供 25ml 的汤A 和 75ml 的汤B。当我们把汤分配给某人之后,汤就没有了。每个回合,我们将从四种概率同为0.25的操作中进行分配选择。如果汤的剩余量不足以完成某次操作,我们将尽可能分配。当两种类型的汤都分配完时,停止操作。注意不存在先分配100 ml汤B的操原创 2020-05-08 21:50:59 · 9134 阅读 · 8 评论 -
Java实现 LeetCode 807 保持城市天际线 (暴力)
807. 保持城市天际线在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,由所有建筑物形成的矩形的外部轮廓。 请看下面的例子。建筑物高度可以增加的最大总和是多少?例子:输入: grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[原创 2020-05-08 21:51:04 · 9351 阅读 · 14 评论 -
Java实现 LeetCode 806 写字符串需要的行数 (暴力模拟)
806. 写字符串需要的行数我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 ‘a’ 需要的单位, widths[1] 代表 ‘b’ 需要的单位,…, widths[25] 代表 ‘z’ 需要的单位。现在...原创 2020-05-08 12:49:45 · 8851 阅读 · 7 评论 -
Java实现 LeetCode 805 数组的均值分割 (DFS+分析题)
805. 数组的均值分割给定的整数数组 A ,我们要将 A数组 中的每个元素移动到 B数组 或者 C数组中。(B数组和C数组在开始的时候都为空)返回true ,当且仅当在我们的完成这样的移动后,可使得B数组的平均值和C数组的平均值相等,并且B数组和C数组都不为空。示例:输入:[1,2,3,4,5,6,7,8]输出: true解释: 我们可以将数组分割为 [1,4,5,8] 和 [2,...原创 2020-05-08 12:46:02 · 8808 阅读 · 5 评论 -
Java实现 LeetCode 802 找到最终的安全状态 (DFS)
802. 找到最终的安全状态在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走。 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止。现在, 如果我们最后能走到终点,那么我们的起始节点是最终安全的。 更具体地说, 存在一个自然数 K, 无论选择从哪里开始行走, 我们走了不到 K 步后必能停止在一个终点。哪些节点最终是安全的? 结果返回一个有序的数组。该有向图有 ...原创 2020-05-08 12:37:48 · 8792 阅读 · 3 评论 -
Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
804. 唯一摩尔斯密码词国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-…","-.-.","-…",".","…-.","–.","…","…",".—","-.-",".-…","–",...原创 2020-05-08 12:36:33 · 8724 阅读 · 6 评论 -
Java实现 LeetCode 803 打砖块 (DFS)
803. 打砖块我们有一组包含1和0的网格;其中1表示砖块。 当且仅当一块砖直接连接到网格的顶部,或者它至少有一块相邻(4 个方向之一)砖块不会掉落时,它才不会落下。我们会依次消除一些砖块。每当我们消除 (i, j) 位置时, 对应位置的砖块(若存在)会消失,然后其他的砖块可能因为这个消除而落下。返回一个数组表示每次消除操作对应落下的砖块数目。示例 1:输入:grid = [[1,0,...原创 2020-05-08 12:37:23 · 8753 阅读 · 6 评论 -
Java实现 LeetCode 801 使序列递增的最小交换次数 (DP)
801. 使序列递增的最小交换次数我们有两个长度相等且不为空的整型数组 A 和 B 。我们可以交换 A[i] 和 B[i] 的元素。注意这两个元素在各自的序列中应该处于相同的位置。在交换过一些元素之后,数组 A 和 B 都应该是严格递增的(数组严格递增的条件仅为A[0] < A[1] < A[2] < … < A[A.length - 1])。给定数组 A 和 B ...原创 2020-05-07 22:18:05 · 9127 阅读 · 11 评论 -
Java实现 LeetCode 799 香槟塔 (暴力模拟)
799. 香槟塔我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟。从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。当左右两边的杯子也满了,就会等流量的流向它们左右两边的杯子,依次类推。(当最底层的玻璃杯满了,香槟会流到地板上)例如,在倾倒一杯香槟后,最顶层的...原创 2020-05-07 21:49:41 · 8837 阅读 · 8 评论 -
Java实现 LeetCode 798 得分最高的最小轮调 (暴力分析)
798. 得分最高的最小轮调给定一个数组 A,我们可以将它按一个非负整数 K 进行轮调,这样可以使数组变为 A[K], A[K+1], A{K+2], … A[A.length - 1], A[0], A[1], …, A[K-1] 的形式。此后,任何值小于或等于其索引的项都可以记作一分。例如,如果数组为 [2, 4, 1, 3, 0],我们按 K = 2 进行轮调后,它将变成 [1, 3, ...原创 2020-05-07 10:36:10 · 9925 阅读 · 13 评论 -
Java实现 LeetCode 797 所有可能的路径 (DFS)
797. 所有可能的路径给一个有 n 个结点的有向无环图,找到所有从 0 到 n-1 的路径并输出(不要求按顺序)二维数组的第 i 个数组中的单元都表示有向图中 i 号结点所能到达的下一些结点(译者注:有向图是有方向的,即规定了a→b你就不能从b→a)空就是没有下一个结点了。示例:输入: [[1,2], [3], [3], []]输出: [[0,1,3],[0,2,3]]解释: 图是这...原创 2020-05-07 10:12:50 · 9154 阅读 · 6 评论