Problems
coordinate_blog
这个作者很懒,什么都没留下…
展开
-
Leetcode 1420:生成数组(超详细的解法!!!)
给你三个整数 n、m 和 k 。下图描述的算法用于找出正整数数组中最大的元素。 请你生成一个具有下述属性的数组 arr :arr 中有 n 个整数。1 <= arr[i] <= m 其中 (0 <= i < n) 。将上面提到的算法应用于 arr ,search_cost 的值等于 k 。返回上述条件下生成数组 arr 的 方法数 ,由于答案可能会很...原创 2020-04-23 21:46:25 · 2268 阅读 · 0 评论 -
Leetcode 1419:数青蛙(超详细的解法!!!)
给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 “croak” )的组合。由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrogs 中会混合多个 “croak” *。*请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目。**注意:**要想发出蛙鸣 “croak”,青蛙必须 依序 输出 ‘c’, ’r’, ’o’, ’a’, ’k’ 这 5 个字母。如果没有...原创 2020-04-22 17:53:33 · 3116 阅读 · 2 评论 -
Leetcode 1418:点菜展示表(超详细的解法!!!)
给你一个数组 orders,表示客户在餐厅中完成的订单,确切地说, orders[i]=[customerNamei,tableNumberi,foodItemi] ,其中 customerNamei 是客户的姓名,tableNumberi 是客户所在餐桌的桌号,而 foodItemi 是客户点的餐品名称。请你返回该餐厅的 点菜展示表 *。*在这张表中,表中第一行为标题,其第一列为餐桌桌号 “T...原创 2020-04-22 16:53:49 · 1258 阅读 · 0 评论 -
Leetcode 1417:重新格式化字符串(超详细的解法!!!)
给你一个混合了数字和字母的字符串 s,其中的字母均为小写英文字母。请你将该字符串重新格式化,使得任意两个相邻字符的类型都不同。也就是说,字母后面应该跟着数字,而数字后面应该跟着字母。请你返回 重新格式化后 的字符串;如果无法按要求重新格式化,则返回一个 空字符串 。示例 1:输入:s = "a0b1c2"输出:"0a1b2c"解释:"0a1b2c" 中任意两个相邻字符的类型都不同。 "...原创 2020-04-22 10:23:30 · 908 阅读 · 0 评论 -
Leetcode 1416:恢复数组(超详细的解法!!!)
某个程序本来应该输出一个整数数组。但是这个程序忘记输出空格了以致输出了一个数字字符串,我们所知道的信息只有:数组中所有整数都在 [1, k] 之间,且数组中的数字都没有前导 0 。给你字符串 s 和整数 k 。可能会有多种不同的数组恢复结果。按照上述程序,请你返回所有可能输出字符串 s 的数组方案数。由于数组方案数可能会很大,请你返回它对 10^9 + 7 取余 后的结果。示例 1:输入...原创 2020-04-21 11:22:16 · 1608 阅读 · 0 评论 -
Leetcode 1415:长度为n的开心字符串中字典序第k小的字符串(超详细的解法!!!)
一个 「开心字符串」定义为:仅包含小写字母 ['a', 'b', 'c'].对所有在 1 到 s.length - 1 之间的 i ,满足 s[i] != s[i + 1] (字符串的下标从 1 开始)。比方说,字符串 “abc”,“ac”,“b” 和 “abcbabcbcb” 都是开心字符串,但是 “aa”,“baa” 和 “ababbc” 都不是开心字符串。给你两个整数 n 和 k...原创 2020-04-21 10:27:24 · 2226 阅读 · 0 评论 -
Leetcode 1414:和为K的最少斐波那契数字数目(超详细的解法!!!)
给你数字 k ,请你返回和为 k 的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次。斐波那契数字定义为:F1=1F_1 = 1F1=1F2=1F_2 = 1F2=1Fn=Fn−1+Fn−2F_n = F_{n-1} + F_{n-2}Fn=Fn−1+Fn−2, 其中n>2n > 2n>2。数据保证对于给定的 k ,一定能找到可行解。示例 ...原创 2020-04-21 08:15:52 · 1264 阅读 · 0 评论 -
Leetcode 1413:逐步求和得到正数的最小值(超详细的解法!!!)
给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。你需要从左到右遍历 nums 数组,并将 startValue 依次累加上 nums 数组中的值。请你在确保累加和始终大于等于 1 的前提下,选出一个最小的 正数 作为startValue。示例 1:输入:nums = [-3,2,-3,4,2]输出:5解释:如果你选择 startValue = 4...原创 2020-04-20 18:56:48 · 857 阅读 · 0 评论 -
Leetcode 1411:给Nx3网格图涂色的方案数(超详细的解法!!!)
你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直边的格子颜色不同)。给你网格图的行数 n 。请你返回给 grid 涂色的方案数。由于答案可能会非常大,请你返回答案对 10^9 + 7 取余的结果。示例 1:输入:n = 1输出:12解释:总共有 12 种可行的方法:示例 2:输入:n...原创 2020-04-20 16:43:25 · 1930 阅读 · 0 评论 -
Leetcode 1409:查询带键的排列(超详细的解法!!!)
给你一个待查数组 queries ,数组中的元素为 1 到 m 之间的正整数。 请你根据以下规则处理所有待查项 queries[i](从 i=0 到 i=queries.length-1):一开始,排列 P=[1,2,3,...,m]。对于当前的 i ,请你找出待查项 queries[i] 在排列 P 中的位置(下标从 0 开始),然后将其从原位置移动到排列 P 的起始位置(即下标为 0 处...原创 2020-04-20 10:41:00 · 548 阅读 · 0 评论 -
Leetcode 1408:数组中的字符串匹配(超详细的解法!!!)
给你一个字符串数组 words ,数组中的每个字符串都可以看作是一个单词。请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词。如果你可以删除 words[j] 最左侧和/或最右侧的若干字符得到 word[i] ,那么字符串 words[i] 就是 words[j] 的一个子字符串。示例 1:输入:words = ["mass","as","hero","superhero"...原创 2020-04-18 16:46:28 · 1752 阅读 · 0 评论 -
Leetcode 1387:将整数按权重排序(超详细的解法!!!)
我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数:如果 x 是偶数,那么 x = x / 2如果 x 是奇数,那么 x = 3 * x + 1比方说,x=3 的权重为 7 。因为 3 需要 7 步变成 1 (3 --> 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1)。给你三个整数 lo...原创 2020-03-23 16:40:09 · 931 阅读 · 0 评论 -
Leetcode 1406:石子游戏 III(超详细的解法!!!)
Alice 和 Bob 用几堆石子在做游戏。几堆石子排成一行,每堆石子都对应一个得分,由数组 stoneValue 给出。Alice 和 Bob 轮流取石子,Alice 总是先开始。在每个玩家的回合中,该玩家可以拿走剩下石子中的的前 1、2 或 3 堆石子 。比赛一直持续到所有石头都被拿走。每个玩家的最终得分为他所拿到的每堆石子的对应得分之和。每个玩家的初始分数都是 0 。比赛的目标是决出最高...原创 2020-04-09 09:07:02 · 1373 阅读 · 0 评论 -
Leetcode 1405:最长快乐字符串(超详细的解法!!!)
如果字符串中不含有任何 'aaa','bbb' 或 'ccc' 这样的字符串作为子串,那么该字符串就是一个「快乐字符串」。给你三个整数 a,b ,c,请你返回 任意一个 满足下列全部条件的字符串 s:s 是一个尽可能长的快乐字符串。s 中 最多 有a 个字母 'a'、b 个字母 'b'、c 个字母 'c' 。s中只含有 'a'、'b' 、'c' 三种字母。如果不存在这样的字符串 s ...原创 2020-04-08 17:06:26 · 1474 阅读 · 0 评论 -
Leetcode 1404:将二进制表示减到1的步骤数(超详细的解法!!!)
给你一个以二进制形式表示的数字 s 。请你返回按下述规则将其减少到 1 所需要的步骤数:如果当前数字为偶数,则将其除以 2 。如果当前数字为奇数,则将其加上 1 。题目保证你总是可以按上述规则将测试用例变为 1 。示例 1:输入:s = "1101"输出:6解释:"1101" 表示十进制数 13 。Step 1) 13 是奇数,加 1 得到 14 Step 2) 14 是偶数...原创 2020-04-08 09:27:56 · 1016 阅读 · 0 评论 -
Leetcode 1403:非递增顺序的最小子序列(超详细的解法!!!)
给你一个数组 nums,请你从中抽取一个子序列,满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和。如果存在多个解决方案,只需返回 长度最小 的子序列。如果仍然有多个解决方案,则返回 元素之和最大 的子序列。与子数组不同的地方在于,「数组的子序列」不强调元素在原数组中的连续性,也就是说,它可以通过从数组中分离一些(也可能不分离)元素得到。注意,题目数据保证满足所有约束条件的解决...原创 2020-04-07 11:28:43 · 1071 阅读 · 0 评论 -
Leetcode 1402:做菜顺序(超详细的解法!!!)
一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。一道菜的 「喜爱时间」系数定义为烹饪这道菜以及之前每道菜所花费的时间乘以这道菜的满意程度,也就是 time[i]*satisfaction[i] 。请你返回做完所有菜 「喜爱时间」总和的最大值为多少。你可以按 任意 顺序安排做菜的顺序,你也可以选择放弃做某些菜来获得更大的总和。示例...原创 2020-04-07 10:28:42 · 1490 阅读 · 0 评论 -
Leetcode 1401:圆和矩形是否有重叠(超详细的解法!!!)
给你一个以 (radius, x_center, y_center) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2),其中 (x1, y1) 是矩形左下角的坐标,(x2, y2) 是右上角的坐标。如果圆和矩形有重叠的部分,请你返回True,否则返回False。换句话说,请你检测是否 存在 点 (xi, yi) ,它既在圆上也在矩形上(两者都包括点落在边界上的情况)。示例 ...原创 2020-04-06 17:52:44 · 2031 阅读 · 1 评论 -
Leetcode 1400:构造K个回文字符串(超详细的解法!!!)
给你一个字符串 s 和一个整数 k 。请你用 s 字符串中 所有字符 构造 k 个非空 回文串 。如果你可以用 s 中所有字符构造 k 个回文字符串,那么请你返回 True ,否则返回 False 。示例 1:输入:s = "annabelle", k = 2输出:true解释:可以用 s 中所有字符构造 2 个回文字符串。一些可行的构造方案包括:"anna" + "elble","a...原创 2020-04-06 17:26:42 · 1465 阅读 · 0 评论 -
Leetcode 1399:统计最大组的数目(超详细的解法!!!)
给你一个整数 n 。请你先求出从 1 到 n 的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。示例 1:输入:n = 13输出:4解释:总共有 9 个组,将 1 到 13 按数位求和后这些组分别是:[1,10],[2,11],[3,12],[4,13],[5],[6],[7...原创 2020-04-06 11:35:18 · 943 阅读 · 0 评论 -
Leetcode 1397:找到所有好字符串(超详细的解法!!!)
—给你两个长度为 n 的字符串 s1 和 s2 ,以及一个字符串 evil 。请你返回 好字符串 的数目。好字符串 的定义为:它的长度为 n ,字典序大于等于 s1 ,字典序小于等于 s2 ,且不包含 evil 为子字符串。由于答案可能很大,请你返回答案对 10^9 + 7 取余的结果。示例 1:输入:n = 2, s1 = "aa", s2 = "da", evil = "b"输出:5...原创 2020-04-06 10:35:45 · 1888 阅读 · 3 评论 -
Leetcode 1396:设计地铁系统(超详细的解法!!!)
请你实现一个类 UndergroundSystem ,它支持以下 3 种方法:1.checkIn(int id, string stationName, int t)编号为 id 的乘客在 t 时刻进入地铁站 stationName 。一个乘客在同一时间只能在一个地铁站进入或者离开。2.checkOut(int id, string stationName, int t)编号为 i...原创 2020-04-02 15:24:14 · 1682 阅读 · 1 评论 -
Leetcode 1395:统计作战单位数(超详细的解法!!!)
n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。每 3 个士兵可以组成一个作战单位,分组规则如下:从队伍中选出下标分别为 i、j、k 的 3 名士兵,他们的评分分别为 rating[i]、rating[j]、rating[k]作战单位需满足: rating[i] < rating[j] < rating[k] 或者 rating[i] > rati...原创 2020-04-02 10:43:24 · 765 阅读 · 0 评论 -
Leetcode 1394:找出数组中的幸运数(超详细的解法!!!)
在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。给你一个整数数组 arr,请你从中找出并返回一个幸运数。如果数组中存在多个幸运数,只需返回 最大 的那个。如果数组中不含幸运数,则返回 -1 。示例 1:输入:arr = [2,2,3,4]输出:2解释:数组中唯一的幸运数是 2 ,因为数值 2 的出现频次也是 2 。示例 2:输入:arr...原创 2020-03-29 16:24:14 · 981 阅读 · 1 评论 -
Leetcode 820:单词的压缩编码(超详细的解法!!!)
给定一个单词列表,我们将这个列表编码成一个索引字符串S与一个索引列表A。例如,如果这个列表是["time", "me", "bell"],我们就可以将其表示为S = "time#bell#"和indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串S中索引的位置开始读取字符串,直到"#"结束,来恢复我们之前的单词列表。那么成功对给定单词列表进行编码的最小字符串长度是多少呢...原创 2020-03-28 20:16:25 · 1497 阅读 · 0 评论 -
Leetcode 914:卡牌分组(超详细的解法!!!)
给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字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,1,1,2,2,2...原创 2020-03-27 15:41:42 · 552 阅读 · 0 评论 -
Leetcode 876:链表的中间结点(超详细的解法!!!)
给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val...原创 2020-03-26 16:25:52 · 509 阅读 · 0 评论 -
Leetcode 365:水壶问题(超详细的解法!!!)
有两个容量分别为x升 和y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好z升的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的z升水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1: (From the famous “Die Hard” example)输入: x = 3, y = 5, z = 4...原创 2020-03-26 15:56:13 · 2524 阅读 · 0 评论 -
Leetcode 1391:检查网格中是否存在有效路径(超详细的解法!!!)
给你一个 m x n 的网格 grid。网格里的每个单元都代表一条街道。grid[i][j] 的街道可以是:1 表示连接左单元格和右单元格的街道。2 表示连接上单元格和下单元格的街道。3 表示连接左单元格和下单元格的街道。4 表示连接右单元格和下单元格的街道。5 表示连接左单元格和上单元格的街道。6 表示连接右单元格和上单元格的街道。 你最开始从左上角的单元格 (0,0...原创 2020-03-25 12:22:08 · 944 阅读 · 0 评论 -
Leetcode 1392:最长快乐前缀(超详细的解法!!!)
「快乐前缀」是在原字符串中既是 非空 前缀也是后缀(不包括原字符串自身)的字符串。给你一个字符串 s,请你返回它的 最长快乐前缀。如果不存在满足题意的前缀,则返回一个空字符串。示例 1:输入:s = "level"输出:"l"解释:不包括 s 自己,一共有 4 个前缀("l", "le", "lev", "leve")和 4 个后缀("l", "el", "vel", "evel")。...原创 2020-03-24 21:26:40 · 2317 阅读 · 1 评论 -
Leetcode 1390:四因数(超详细的解法!!!)
给你一个整数数组 nums,请你返回该数组中恰有四个因数的这些整数的各因数之和。如果数组中不存在满足题意的整数,则返回 0 。示例:输入:nums = [21,4,7]输出:32解释:21 有 4 个因数:1, 3, 7, 214 有 3 个因数:1, 2, 47 有 2 个因数:1, 7答案仅为 21 的所有因数的和。提示:1 <= nums.length <...原创 2020-03-24 17:06:40 · 684 阅读 · 0 评论 -
Leetcode 1389:按既定顺序创建目标数组(超详细的解法!!!)
给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组:目标数组 target 最初为空。按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。重复上一步,直到在 nums 和 index 中都没有要读取的元素。请你返回目标数组。题目保证数字插入位置总是存在。示例 1:输入...原创 2020-03-24 16:11:50 · 491 阅读 · 0 评论 -
Leetcode 1388:3n块披萨(超详细的解法!!!)
给你一个披萨,它由 3n 块不同大小的部分组成,现在你和你的朋友们需要按照如下规则来分披萨:你挑选 任意 一块披萨。Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨。Bob 将会挑选你所选择的披萨顺时针方向的下一块披萨。重复上述过程直到没有披萨剩下。每一块披萨的大小按顺时针方向由循环数组 slices 表示。请你返回你可以获得的披萨大小总和的最大值。示例 1: ...原创 2020-03-24 15:23:44 · 1792 阅读 · 0 评论 -
Leetcode 1386:安排电影院座位(超详细的解法!!!)
如上图所示,电影院的观影厅中有 n 行座位,行编号从 1 到 n ,且每一行内总共有 10 个座位,列编号从 1 到 10 。给你数组 reservedSeats ,包含所有已经被预约了的座位。比如说,researvedSeats[i]=[3,8] ,它表示第 3 行第 8 个座位被预约了。请你返回 最多能安排多少个 4 人家庭 。4 人家庭要占据 同一行内连续 的 4 个座位。隔...原创 2020-03-23 15:51:40 · 4912 阅读 · 0 评论 -
Leetcode 1385:两个数组间的距离值(超详细的解法!!!)
给你两个整数数组 arr1 , arr2 和一个整数 d ,请你返回两个数组之间的 距离值 。「距离值」 定义为符合此描述的元素数目:对于元素 arr1[i] ,不存在任何元素 arr2[j] 满足 |arr1[i]-arr2[j]| <= d 。示例 1:输入:arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2输出:2解释:对于 arr1[0]=4...原创 2020-03-23 10:04:05 · 1501 阅读 · 0 评论 -
Leetcode 409:最长回文串(超详细的解法!!!)
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。解题思路思路比较简单,回文串必然对称,那么只需要统计字符串中每...原创 2020-03-19 20:47:25 · 1239 阅读 · 0 评论 -
Leetcode 836:矩形重叠(超详细的解法!!!)
矩形以列表[x1, y1, x2, y2]的形式表示,其中(x1, y1)为左下角的坐标,(x2, y2)是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:输入:rec1 = [0,...原创 2020-03-19 20:07:13 · 1244 阅读 · 0 评论 -
Leetcode 695:岛屿的最大面积(超详细的解法!!!)
给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0...原创 2020-03-19 15:59:29 · 708 阅读 · 0 评论 -
背包问题中的数学逻辑
背包问题是一个非常经典的问题,包括01背包问题、完全背包问题、多重背包问题等。网上的资料也非常多,比较有名的如《背包九讲》。纵观网上的很多文章博客,大多数都只是谈背包问题的状态转移,空间优化过程。然而并没有提及其背后的推导过程和不同问题之间的数理逻辑。本文着重从数学角度来探讨问题的解法和优化思路。01背包问题我们有nnn种物品,物品jjj的重量为wjw_jwj,价格为pjp_jpj。我们假...原创 2020-03-18 21:11:01 · 1326 阅读 · 0 评论 -
Leetcode 1383:最大的团队表现值(超详细的解法!!!)
公司有编号为 1 到 n 的 n 个工程师,给你两个数组 speed 和 efficiency ,其中 speed[i] 和 efficiency[i] 分别代表第 i 位工程师的速度和效率。请你返回由最多 k 个工程师组成的 最大团队表现值 ,由于答案可能很大,请你返回结果对 10^9 + 7 取余后的结果。团队表现值 的定义为:一个团队中「所有工程师速度的和」乘以他们「效率值中的最小值」。...原创 2020-03-17 10:18:48 · 1845 阅读 · 0 评论