Leetcode-cn.com 2021-12-13
🟡 807.max-increase-to-keep-city-skyline
🏷️ Tags
#greedy #array #matrix
undefinedExample
🟡 807.max-increase-to-keep-city-skyline
🏷️ Tags
#greedy #array #matrix
undefinedExample
输入: grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]
输出: 35
解释:
The grid is:
[ [3, 0, 8, 4],
[2, 4, 5, 7],
[9, 2, 6, 3],
[0, 3, 1, 0] ]
从数组竖直方向(即顶部,底部)看“天际线”是:[9, 4, 8, 7]
从水平水平方向(即左侧,右侧)看“天际线”是:[8, 7, 9, 3]
在不影响天际线的情况下对建筑物进行增高后,新数组如下:
gridNew = [ [8, 4, 8, 7],
[7, 4, 7, 7],
[9, 4, 8, 7],
[3, 3, 3, 3] ]
Leetcode-cn.com 2021-12-14
🔴 630.course-schedule-iii
🏷️ Tags
#greedy #array #heap_priority_queue
Description
这里有
你的学期从第
返回你最多可以修读的课程数目。
Example
🔴 630.course-schedule-iii
🏷️ Tags
#greedy #array #heap_priority_queue
Description
这里有
n 门不同的在线课程,按从 1 到 n 编号。给你一个数组 courses ,其中 courses[i] = [durationi, lastDayi] 表示第 i 门课将会 持续 上 durationi 天课,并且必须在不晚于 lastDayi 的时候完成。你的学期从第
1 天开始。且不能同时修读两门及两门以上的课程。返回你最多可以修读的课程数目。
Example
输入:courses = [[100, 200], [200, 1300], [1000, 1250], [2000, 3200]]
输出:3
解释:
这里一共有 4 门课程,但是你最多可以修 3 门:
首先,修第 1 门课,耗费 100 天,在第 100 天完成,在第 101 天开始下门课。
第二,修第 3 门课,耗费 1000 天,在第 1100 天完成,在第 1101 天开始下门课程。
第三,修第 2 门课,耗时 200 天,在第 1300 天完成。
第 4 门课现在不能修,因为将会在第 3300 天完成它,这已经超出了关闭日期。
Leetcode-cn.com 2021-12-15
🟡 851.loud-and-rich
🏷️ Tags
#depth_first_search #graph #topological_sort #array
Description
有一组
给你一个数组
现在,返回一个整数数组
Example
🟡 851.loud-and-rich
🏷️ Tags
#depth_first_search #graph #topological_sort #array
Description
有一组
n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱,以及不同程度的安静值(quietness)。为了方便起见,我们将编号为 x 的人简称为 "person x "。给你一个数组
richer ,其中 richer[i] = [ai, bi] 表示 person ai 比 person bi 更有钱。另给你一个整数数组 quiet ,其中 quiet[i] 是 person i 的安静值。richer 中所给出的数据 逻辑自恰(也就是说,在 person x 比 person y 更有钱的同时,不会出现 person y 比 person x 更有钱的情况 )。现在,返回一个整数数组
answer 作为答案,其中 answer[x] = y 的前提是,在所有拥有的钱肯定不少于 person x 的人中,person y 是最安静的人(也就是安静值 quiet[y] 最小的人)。Example
输入:richer = [[1,0],[2,1],[3,1],[3,7],[4,3],[5,3],[6,3]], quiet = [3,2,5,4,6,1,7,0]
输出:[5,5,2,5,4,5,6,7]
解释:
answer[0] = 5,
person 5 比 person 3 有更多的钱,person 3 比 person 1 有更多的钱,person 1 比 person 0 有更多的钱。
唯一较为安静(有较低的安静值 quiet[x])的人是 person 7,
但是目前还不清楚他是否比 person 0 更有钱。
answer[7] = 7,
在所有拥有的钱肯定不少于 person 7 的人中(这可能包括 person 3,4,5,6 以及 7),
最安静(有较低安静值 quiet[x])的人是 person 7。
其他的答案也可以用类似的推理来解释。
Leetcode-cn.com 2021-12-17
🟢 1518.water-bottles
🏷️ Tags
#math #simulation
Description
小区便利店正在促销,用
如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。
请你计算 最多 能喝到多少瓶酒。
Example
🟢 1518.water-bottles
🏷️ Tags
#math #simulation
Description
小区便利店正在促销,用
numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。
请你计算 最多 能喝到多少瓶酒。
Example
输入:numBottles = 9, numExchange = 3
输出:13
解释:你可以用 3 个空酒瓶兑换 1 瓶酒。
所以最多能喝到 9 + 3 + 1 = 13 瓶酒。
Leetcode-cn.com 2021-12-18
🟡 419.battleships-in-a-board
🏷️ Tags
#depth_first_search #array #matrix
Description
给你一个大小为
战舰 只能水平或者垂直放置在
Example
🟡 419.battleships-in-a-board
🏷️ Tags
#depth_first_search #array #matrix
Description
给你一个大小为
m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 'X' 或者是一个空位 '.' ,返回在甲板 board 上放置的 战舰 的数量。战舰 只能水平或者垂直放置在
board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。Example
输入:board = [["X",".",".","X"],[".",".",".","X"],[".",".",".","X"]]
输出:2
Leetcode-cn.com 2021-12-19
🟢 997.find-the-town-judge
🏷️ Tags
#graph #array #hash_table
Description
在一个小镇里,按从
如果小镇的法官真的存在,那么:
小镇的法官不相信任何人。
每个人(除了小镇法官外)都信任小镇的法官。
只有一个人同时满足条件 1 和条件 2 。
给定数组
如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的编号。否则,返回
Example
🟢 997.find-the-town-judge
🏷️ Tags
#graph #array #hash_table
Description
在一个小镇里,按从
1 到 n 为 n 个人进行编号。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:
小镇的法官不相信任何人。
每个人(除了小镇法官外)都信任小镇的法官。
只有一个人同时满足条件 1 和条件 2 。
给定数组
trust,该数组由信任对 trust[i] = [a, b] 组成,表示编号为 a 的人信任编号为 b 的人。如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的编号。否则,返回
-1。Example
输入:n = 2, trust = [[1,2]]
输出:2
Leetcode-cn.com 2021-12-20
🟡 475.heaters
🏷️ Tags
#array #two_pointers #binary_search #sorting
Description
冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。
在加热器的加热半径范围内的每个房屋都可以获得供暖。
现在,给出位于一条水平线上的房屋
说明:所有供暖器都遵循你的半径标准,加热的半径也一样。
Example
🟡 475.heaters
🏷️ Tags
#array #two_pointers #binary_search #sorting
Description
冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。
在加热器的加热半径范围内的每个房屋都可以获得供暖。
现在,给出位于一条水平线上的房屋
houses 和供暖器 heaters 的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。说明:所有供暖器都遵循你的半径标准,加热的半径也一样。
Example
输入: houses = [1,2,3], heaters = [2]
输出: 1
解释: 仅在位置2上有一个供暖器。如果我们将加热半径设为1,那么所有房屋就都能得到供暖。
Leetcode-cn.com 2021-12-21
🟢 1154.day-of-the-year
🏷️ Tags
#math #string
Description
给你一个字符串
通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。
Example
🟢 1154.day-of-the-year
🏷️ Tags
#math #string
Description
给你一个字符串
date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。
Example
输入:date = "2019-01-09"
输出:9
百度百科
公元
公元,即公历纪年法,是一种源自西方社会的纪年方法,太阳历的一种。原称基督纪元,又称西元。现行的公历纪元法由意大利医生数学家、天文学家Aloysius Lilius(里利乌斯)对儒略历加以改良得来。1582年,时任罗马教皇的格列高利十三世予以批准颁行,因此公历也被称为格里历。公历纪年以耶稣诞生之年作为纪年的开始,即公元元年。在公历纪元中,耶稣诞生之后的日期,称为“主的年份”(Anno Domini,缩写为A.D.)(拉丁);而在耶稣诞生之前,称为主前(Before Christ,缩写为B.C.)。但是现代…
Leetcode-cn.com 2021-12-22
🟡 686.repeated-string-match
🏷️ Tags
#string #string_matching
Description
给定两个字符串
注意:字符串
Example
🟡 686.repeated-string-match
🏷️ Tags
#string #string_matching
Description
给定两个字符串
a 和 b,寻找重复叠加字符串 a 的最小次数,使得字符串 b 成为叠加后的字符串 a 的子串,如果不存在则返回 -1。注意:字符串
"abc" 重复叠加 0 次是 "",重复叠加 1 次是 "abc",重复叠加 2 次是 "abcabc"。Example
输入:a = "abcd", b = "cdabcdab"
输出:3
解释:a 重复叠加三遍后为 "abcdabcdabcd", 此时 b 是其子串。
Leetcode-cn.com 2021-12-23
🔴 1044.longest-duplicate-substring
🏷️ Tags
#string #binary_search #suffix_array #sliding_window #hash_function #rolling_hash
Description
给你一个字符串
返回 任意一个 可能具有最长长度的重复子串。如果
Example
🔴 1044.longest-duplicate-substring
🏷️ Tags
#string #binary_search #suffix_array #sliding_window #hash_function #rolling_hash
Description
给你一个字符串
s ,考虑其所有 重复子串 :即,s 的连续子串,在 s 中出现 2 次或更多次。这些出现之间可能存在重叠。返回 任意一个 可能具有最长长度的重复子串。如果
s 不含重复子串,那么答案为 "" 。Example
输入:s = "banana"
输出:"ana"
Leetcode-cn.com 2021-12-24
🟡 1705.maximum-number-of-eaten-apples
🏷️ Tags
#greedy #array #heap_priority_queue
Description
有一棵特殊的苹果树,一连
你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这
给你两个长度为
Example
🟡 1705.maximum-number-of-eaten-apples
🏷️ Tags
#greedy #array #heap_priority_queue
Description
有一棵特殊的苹果树,一连
n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这
n 天之后继续吃苹果。给你两个长度为
n 的整数数组 days 和 apples ,返回你可以吃掉的苹果的最大数目。Example
输入:apples = [1,2,3,5,2], days = [3,2,1,4,2]
输出:7
解释:你可以吃掉 7 个苹果:
- 第一天,你吃掉第一天长出来的苹果。
- 第二天,你吃掉一个第二天长出来的苹果。
- 第三天,你吃掉一个第二天长出来的苹果。过了这一天,第三天长出来的苹果就已经腐烂了。
- 第四天到第七天,你吃的都是第四天长出来的苹果。
Leetcode-cn.com 2021-12-25
🟡 1609.even-odd-tree
🏷️ Tags
#tree #breadth_first_search #binary_tree
Description
如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :
二叉树根节点所在层下标为
偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增
奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减
给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回
Example
🟡 1609.even-odd-tree
🏷️ Tags
#tree #breadth_first_search #binary_tree
Description
如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :
二叉树根节点所在层下标为
0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增
奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减
给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回
true ,否则返回 false 。Example
输入:root = [1,10,4,3,null,7,9,12,8,6,null,null,2]
输出:true
解释:每一层的节点值分别是:
0 层:[1]
1 层:[10,4]
2 层:[3,7,9]
3 层:[12,8,6,2]
由于 0 层和 2 层上的节点值都是奇数且严格递增,而 1 层和 3 层上的节点值都是偶数且严格递减,因此这是一棵奇偶树。
Leetcode-cn.com 2021-12-26
🟢 1078.occurrences-after-bigram
🏷️ Tags
#string
Description
给出第一个词
对于每种这样的情况,将第三个词 "
Example
🟢 1078.occurrences-after-bigram
🏷️ Tags
#string
Description
给出第一个词
first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。对于每种这样的情况,将第三个词 "
third" 添加到答案中,并返回答案。Example
输入:text = "alice is a good girl she is a good student", first = "a", second = "good"
输出:["girl","student"]
Leetcode-cn.com 2021-12-27
🟡 825.friends-of-appropriate-ages
🏷️ Tags
#array #two_pointers #binary_search #sorting
Description
在社交媒体网站上有
如果下述任意一个条件为真,那么用户
否则,
注意,如果
返回在该社交媒体网站上产生的好友请求总数。
Example
🟡 825.friends-of-appropriate-ages
🏷️ Tags
#array #two_pointers #binary_search #sorting
Description
在社交媒体网站上有
n 个用户。给你一个整数数组 ages ,其中 ages[i] 是第 i 个用户的年龄。如果下述任意一个条件为真,那么用户
x 将不会向用户 y(x != y)发送好友请求:age[y] <= 0.5 * age[x] + 7age[y] > age[x]age[y] > 100 && age[x] < 100否则,
x 将会向 y 发送一条好友请求。注意,如果
x 向 y 发送一条好友请求,y 不必也向 x 发送一条好友请求。另外,用户不会向自己发送好友请求。返回在该社交媒体网站上产生的好友请求总数。
Example
输入:ages = [16,16]
输出:2
解释:2 人互发好友请求。
Leetcode-cn.com 2021-12-28
🔴 472.concatenated-words
🏷️ Tags
#depth_first_search #trie #array #string #dynamic_programming
Description
给你一个 不含重复 单词的字符串数组
连接词 定义为:一个完全由给定数组中的至少两个较短单词组成的字符串。
Example
🔴 472.concatenated-words
🏷️ Tags
#depth_first_search #trie #array #string #dynamic_programming
Description
给你一个 不含重复 单词的字符串数组
words ,请你找出并返回 words 中的所有 连接词 。连接词 定义为:一个完全由给定数组中的至少两个较短单词组成的字符串。
Example
输入:words = ["cat","cats","catsdogcats","dog","dogcatsdog","hippopotamuses","rat","ratcatdogcat"]
输出:["catsdogcats","dogcatsdog","ratcatdogcat"]
解释:"catsdogcats" 由 "cats", "dog" 和 "cats" 组成;
"dogcatsdog" 由 "dog", "cats" 和 "dog" 组成;
"ratcatdogcat" 由 "rat", "cat", "dog" 和 "cat" 组成。
Leetcode-cn.com 2021-12-29
🟢 1995.count-special-quadruplets
🏷️ Tags
#array #enumeration
Description
给你一个 下标从 0 开始 的整数数组
Example
🟢 1995.count-special-quadruplets
🏷️ Tags
#array #enumeration
Description
给你一个 下标从 0 开始 的整数数组
nums ,返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 :nums[a] + nums[b] + nums[c] == nums[d] ,且a < b < c < dExample
输入:nums = [1,2,3,6]
输出:1
解释:满足要求的唯一一个四元组是 (0, 1, 2, 3) 因为 1 + 2 + 3 == 6 。
Leetcode-cn.com 2021-12-30
🟡 846.hand-of-straights
🏷️ Tags
#greedy #array #hash_table #sorting
Description
Alice 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌数都是
给你一个整数数组
Example
🟡 846.hand-of-straights
🏷️ Tags
#greedy #array #hash_table #sorting
Description
Alice 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌数都是
groupSize ,并且由 groupSize 张连续的牌组成。给你一个整数数组
hand 其中 hand[i] 是写在第 i 张牌,和一个整数 groupSize 。如果她可能重新排列这些牌,返回 true ;否则,返回 false 。Example
输入:hand = [1,2,3,6,2,3,4,7,8], groupSize = 3
输出:true
解释:Alice 手中的牌可以被重新排列为 [1,2,3],[2,3,4],[6,7,8]。
Leetcode-cn.com 2021-12-31
🟢 507.perfect-number
🏷️ Tags
#math
Description
对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。
给定一个 整数
Example
🟢 507.perfect-number
🏷️ Tags
#math
Description
对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。
给定一个 整数
n, 如果是完美数,返回 true,否则返回 falseExample
输入:num = 28
输出:true
解释:28 = 1 + 2 + 4 + 7 + 14
1, 2, 4, 7, 和 14 是 28 的所有正因子。
Leetcode-cn.com 2022-01-01
🟢 2022.convert-1d-array-into-2d-array
🏷️ Tags
#array #matrix #simulation
Description
给你一个下标从 0 开始的一维整数数组
请你根据上述过程返回一个
Example
🟢 2022.convert-1d-array-into-2d-array
🏷️ Tags
#array #matrix #simulation
Description
给你一个下标从 0 开始的一维整数数组
original 和两个整数 m 和 n 。你需要使用 original 中 所有 元素创建一个 m 行 n 列的二维数组。original 中下标从 0 到 n - 1 (都 包含 )的元素构成二维数组的第一行,下标从 n 到 2 * n - 1 (都 包含 )的元素构成二维数组的第二行,依此类推。请你根据上述过程返回一个
m x n 的二维数组。如果无法构成这样的二维数组,请你返回一个空的二维数组。Example
输入:original = [1,2,3,4], m = 2, n = 2
输出:[[1,2],[3,4]]
解释:
构造出的二维数组应该包含 2 行 2 列。
original 中第一个 n=2 的部分为 [1,2] ,构成二维数组的第一行。
original 中第二个 n=2 的部分为 [3,4] ,构成二维数组的第二行。
Leetcode-cn.com 2022-01-03
🟢 1185.day-of-the-week
🏷️ Tags
#math
Description
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数:
您返回的结果必须是这几个值中的一个
Example
🟢 1185.day-of-the-week
🏷️ Tags
#math
Description
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数:
day、month 和 year,分别表示日、月、年。您返回的结果必须是这几个值中的一个
{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}。Example
输入:day = 31, month = 8, year = 2019
输出:"Saturday"