Leetcode-cn.com 2022-01-20
🟡 2029.stone-game-ix
🏷️ Tags
#greedy #array #math #counting #game_theory
Description
Alice 和 Bob 再次设计了一款新的石子游戏。现有一行 n 个石子,每个石子都有一个关联的数字表示它的价值。给你一个整数数组
Alice 和 Bob 轮流进行自己的回合,Alice 先手。每一回合,玩家需要从
如果玩家移除石子后,导致 所有已移除石子 的价值 总和 可以被 3 整除,那么该玩家就 输掉游戏 。
如果不满足上一条,且移除后没有任何剩余的石子,那么 Bob 将会直接获胜(即便是在 Alice 的回合)。
假设两位玩家均采用 最佳 决策。如果 Alice 获胜,返回
Example
🟡 2029.stone-game-ix
🏷️ Tags
#greedy #array #math #counting #game_theory
Description
Alice 和 Bob 再次设计了一款新的石子游戏。现有一行 n 个石子,每个石子都有一个关联的数字表示它的价值。给你一个整数数组
stones ,其中 stones[i] 是第 i 个石子的价值。Alice 和 Bob 轮流进行自己的回合,Alice 先手。每一回合,玩家需要从
stones 中移除任一石子。如果玩家移除石子后,导致 所有已移除石子 的价值 总和 可以被 3 整除,那么该玩家就 输掉游戏 。
如果不满足上一条,且移除后没有任何剩余的石子,那么 Bob 将会直接获胜(即便是在 Alice 的回合)。
假设两位玩家均采用 最佳 决策。如果 Alice 获胜,返回
true ;如果 Bob 获胜,返回 false 。Example
输入:stones = [2,1]
输出:true
解释:游戏进行如下:
- 回合 1:Alice 可以移除任意一个石子。
- 回合 2:Bob 移除剩下的石子。
已移除的石子的值总和为 1 + 2 = 3 且可以被 3 整除。因此,Bob 输,Alice 获胜。
Leetcode-cn.com 2022-01-21
🔴 1345.jump-game-iv
🏷️ Tags
#breadth_first_search #array #hash_table
Description
给你一个整数数组
每一步,你可以从下标
请你返回到达数组最后一个元素的下标处所需的 最少操作次数 。
注意:任何时候你都不能跳到数组外面。
Example
🔴 1345.jump-game-iv
🏷️ Tags
#breadth_first_search #array #hash_table
Description
给你一个整数数组
arr ,你一开始在数组的第一个元素处(下标为 0)。每一步,你可以从下标
i 跳到下标:i + 1 满足:i + 1 < arr.lengthi - 1 满足:i - 1 >= 0j 满足:arr[i] == arr[j] 且 i != j请你返回到达数组最后一个元素的下标处所需的 最少操作次数 。
注意:任何时候你都不能跳到数组外面。
Example
输入:arr = [100,-23,-23,404,100,23,23,23,3,404]
输出:3
解释:那你需要跳跃 3 次,下标依次为 0 --> 4 --> 3 --> 9 。下标 9 为数组的最后一个元素的下标。
Leetcode-cn.com 2022-01-22
🟢 1332.remove-palindromic-subsequences
🏷️ Tags
#two_pointers #string
Description
给你一个字符串
返回删除给定字符串中所有字符(字符串为空)的最小删除次数。
「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。
「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。
Example
🟢 1332.remove-palindromic-subsequences
🏷️ Tags
#two_pointers #string
Description
给你一个字符串
s,它仅由字母 'a' 和 'b' 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。返回删除给定字符串中所有字符(字符串为空)的最小删除次数。
「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。
「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。
Example
输入:s = "ababa"
输出:1
解释:字符串本身就是回文序列,只需要删除一次。
Leetcode-cn.com 2022-01-23
🟡 2034.stock-price-fluctuation
🏷️ Tags
#design #hash_table #data_stream #ordered_set #heap_priority_queue
Description
给你一支股票价格的数据流。数据流中每一条记录包含一个 时间戳 和该时间点股票对应的 价格 。
不巧的是,由于股票市场内在的波动性,股票价格记录可能不是按时间顺序到来的。某些情况下,有的记录可能是错的。如果两个有相同时间戳的记录出现在数据流中,前一条记录视为错误记录,后出现的记录 更正 前一条错误的记录。
请你设计一个算法,实现:
更新 股票在某一时间戳的股票价格,如果有之前同一时间戳的价格,这一操作将 更正 之前的错误价格。
找到当前记录里 最新股票价格 。最新股票价格 定义为时间戳最晚的股票价格。
找到当前记录里股票的 最高价格 。
找到当前记录里股票的 最低价格 。
请你实现
Example
🟡 2034.stock-price-fluctuation
🏷️ Tags
#design #hash_table #data_stream #ordered_set #heap_priority_queue
Description
给你一支股票价格的数据流。数据流中每一条记录包含一个 时间戳 和该时间点股票对应的 价格 。
不巧的是,由于股票市场内在的波动性,股票价格记录可能不是按时间顺序到来的。某些情况下,有的记录可能是错的。如果两个有相同时间戳的记录出现在数据流中,前一条记录视为错误记录,后出现的记录 更正 前一条错误的记录。
请你设计一个算法,实现:
更新 股票在某一时间戳的股票价格,如果有之前同一时间戳的价格,这一操作将 更正 之前的错误价格。
找到当前记录里 最新股票价格 。最新股票价格 定义为时间戳最晚的股票价格。
找到当前记录里股票的 最高价格 。
找到当前记录里股票的 最低价格 。
请你实现
StockPrice 类:StockPrice() 初始化对象,当前无股票价格记录。void update(int timestamp, int price) 在时间点 timestamp 更新股票价格为 price 。int current() 返回股票 最新价格 。int maximum() 返回股票 最高价格 。int minimum() 返回股票 最低价格 。Example
输入:
["StockPrice", "update", "update", "current", "maximum", "update", "maximum", "update", "minimum"]
[[], [1, 10], [2, 5], [], [], [1, 3], [], [4, 2], []]
输出:
[null, null, null, 5, 10, null, 5, null, 2]
解释:
StockPrice stockPrice = new StockPrice();
stockPrice.update(1, 10); // 时间戳为 [1] ,对应的股票价格为 [10] 。
stockPrice.update(2, 5); // 时间戳为 [1,2] ,对应的股票价格为 [10,5] 。
stockPrice.current(); // 返回 5 ,最新时间戳为 2 ,对应价格为 5 。
stockPrice.maximum(); // 返回 10 ,最高价格的时间戳为 1 ,价格为 10 。
stockPrice.update(1, 3); // 之前时间戳为 1 的价格错误,价格更新为 3 。
// 时间戳为 [1,2] ,对应股票价格为 [3,5] 。
stockPrice.maximum(); // 返回 5 ,更正后最高价格为 5 。
stockPrice.update(4, 2); // 时间戳为 [1,2,4] ,对应价格为 [3,5,2] 。
stockPrice.minimum(); // 返回 2 ,最低价格时间戳为 4 ,价格为 2 。
Leetcode-cn.com 2022-01-24
🔴 2045.second-minimum-time-to-reach-destination
🏷️ Tags
#breadth_first_search #graph #shortest_path
Description
城市用一个 双向连通 图表示,图中有
每个节点都有一个交通信号灯,每
第二小的值 是 严格大于 最小值的所有值中最小的值。
例如,
给你
注意:
你可以 任意次 穿过任意顶点,包括
你可以假设在 启程时 ,所有信号灯刚刚变成 绿色 。
Example
🔴 2045.second-minimum-time-to-reach-destination
🏷️ Tags
#breadth_first_search #graph #shortest_path
Description
城市用一个 双向连通 图表示,图中有
n 个节点,从 1 到 n 编号(包含 1 和 n)。图中的边用一个二维整数数组 edges 表示,其中每个 edges[i] = [ui, vi] 表示一条节点 ui 和节点 vi 之间的双向连通边。每组节点对由 最多一条 边连通,顶点不存在连接到自身的边。穿过任意一条边的时间是 time 分钟。每个节点都有一个交通信号灯,每
change 分钟改变一次,从绿色变成红色,再由红色变成绿色,循环往复。所有信号灯都 同时 改变。你可以在 任何时候 进入某个节点,但是 只能 在节点 信号灯是绿色时 才能离开。如果信号灯是 绿色 ,你 不能 在节点等待,必须离开。第二小的值 是 严格大于 最小值的所有值中最小的值。
例如,
[2, 3, 4] 中第二小的值是 3 ,而 [2, 2, 4] 中第二小的值是 4 。给你
n、edges、time 和 change ,返回从节点 1 到节点 n 需要的 第二短时间 。注意:
你可以 任意次 穿过任意顶点,包括
1 和 n 。你可以假设在 启程时 ,所有信号灯刚刚变成 绿色 。
Example
输入:n = 5, edges = [[1,2],[1,3],[1,4],[3,4],[4,5]], time = 3, change = 5
输出:13
解释:
上面的左图展现了给出的城市交通图。
右图中的蓝色路径是最短时间路径。
花费的时间是:
- 从节点 1 开始,总花费时间=0
- 1 -> 4:3 分钟,总花费时间=3
- 4 -> 5:3 分钟,总花费时间=6
因此需要的最小时间是 6 分钟。
右图中的红色路径是第二短时间路径。
- 从节点 1 开始,总花费时间=0
- 1 -> 3:3 分钟,总花费时间=3
- 3 -> 4:3 分钟,总花费时间=6
- 在节点 4 等待 4 分钟,总花费时间=10
- 4 -> 5:3 分钟,总花费时间=13
因此第二短时间是 13 分钟。
Leetcode-cn.com 2022-01-25
🟢 1688.count-of-matches-in-tournament
🏷️ Tags
#math #simulation
Description
给你一个整数
如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行
如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行
返回在比赛中进行的配对次数,直到决出获胜队伍为止。
Example
🟢 1688.count-of-matches-in-tournament
🏷️ Tags
#math #simulation
Description
给你一个整数
n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行
n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行
(n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进入下一轮。返回在比赛中进行的配对次数,直到决出获胜队伍为止。
Example
输入:n = 7
输出:6
解释:比赛详情:
- 第 1 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
- 第 2 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
- 第 3 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
总配对次数 = 3 + 2 + 1 = 6
Leetcode-cn.com 2022-01-26
🟡 2013.detect-squares
🏷️ Tags
#design #array #hash_table #counting
Description
给你一个在 X-Y 平面上的点构成的数据流。设计一个满足下述要求的算法:
添加 一个在数据流中的新点到某个数据结构中。可以添加 重复 的点,并会视作不同的点进行处理。
给你一个查询点,请你从数据结构中选出三个点,使这三个点和查询点一同构成一个 面积为正 的 轴对齐正方形 ,统计 满足该要求的方案数目。
轴对齐正方形 是一个正方形,除四条边长度相同外,还满足每条边都与 x-轴 或 y-轴 平行或垂直。
实现
Example
🟡 2013.detect-squares
🏷️ Tags
#design #array #hash_table #counting
Description
给你一个在 X-Y 平面上的点构成的数据流。设计一个满足下述要求的算法:
添加 一个在数据流中的新点到某个数据结构中。可以添加 重复 的点,并会视作不同的点进行处理。
给你一个查询点,请你从数据结构中选出三个点,使这三个点和查询点一同构成一个 面积为正 的 轴对齐正方形 ,统计 满足该要求的方案数目。
轴对齐正方形 是一个正方形,除四条边长度相同外,还满足每条边都与 x-轴 或 y-轴 平行或垂直。
实现
DetectSquares 类:DetectSquares() 使用空数据结构初始化对象void add(int[] point) 向数据结构添加一个新的点 point = [x, y]int count(int[] point) 统计按上述方式与点 point = [x, y] 共同构造 轴对齐正方形 的方案数。Example
输入:
["DetectSquares", "add", "add", "add", "count", "count", "add", "count"]
[[], [[3, 10]], [[11, 2]], [[3, 2]], [[11, 10]], [[14, 8]], [[11, 2]], [[11, 10]]]
输出:
[null, null, null, null, 1, 0, null, 2]
解释:
DetectSquares detectSquares = new DetectSquares();
detectSquares.add([3, 10]);
detectSquares.add([11, 2]);
detectSquares.add([3, 2]);
detectSquares.count([11, 10]); // 返回 1 。你可以选择:
// - 第一个,第二个,和第三个点
detectSquares.count([14, 8]); // 返回 0 。查询点无法与数据结构中的这些点构成正方形。
detectSquares.add([11, 2]); // 允许添加重复的点。
detectSquares.count([11, 10]); // 返回 2 。你可以选择:
// - 第一个,第二个,和第三个点
// - 第一个,第三个,和第四个点
Leetcode-cn.com 2022-01-27
🟢 2047.number-of-valid-words-in-a-sentence
🏷️ Tags
#string
Description
句子仅由小写字母(
如果一个 token 同时满足下述条件,则认为这个 token 是一个有效单词:
仅由小写字母、连字符和/或标点(不含数字)。
至多一个 连字符
至多一个 标点符号。如果存在,标点符号应当位于 token 的 末尾 。
这里给出几个有效单词的例子:
给你一个字符串
Example
🟢 2047.number-of-valid-words-in-a-sentence
🏷️ Tags
#string
Description
句子仅由小写字母(
'a' 到 'z')、数字('0' 到 '9')、连字符('-')、标点符号('!'、'.' 和 ',')以及空格(' ')组成。每个句子可以根据空格分解成 一个或者多个 token ,这些 token 之间由一个或者多个空格 ' ' 分隔。如果一个 token 同时满足下述条件,则认为这个 token 是一个有效单词:
仅由小写字母、连字符和/或标点(不含数字)。
至多一个 连字符
'-' 。如果存在,连字符两侧应当都存在小写字母("a-b" 是一个有效单词,但 "-ab" 和 "ab-" 不是有效单词)。至多一个 标点符号。如果存在,标点符号应当位于 token 的 末尾 。
这里给出几个有效单词的例子:
"a-b."、"afad"、"ba-c"、"a!" 和 "!" 。给你一个字符串
sentence ,请你找出并返回 sentence 中 有效单词的数目 。Example
输入:sentence = "cat and dog"
输出:3
解释:句子中的有效单词是 "cat"、"and" 和 "dog"
Leetcode-cn.com 2022-01-28
🟡 1996.the-number-of-weak-characters-in-the-game
🏷️ Tags
#stack #greedy #array #sorting #monotonic_stack
Description
你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 。给你一个二维整数数组
如果存在一个其他角色的攻击和防御等级 都严格高于 该角色的攻击和防御等级,则认为该角色为 弱角色 。更正式地,如果认为角色
返回 弱角色 的数量。
Example
🟡 1996.the-number-of-weak-characters-in-the-game
🏷️ Tags
#stack #greedy #array #sorting #monotonic_stack
Description
你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 。给你一个二维整数数组
properties ,其中 properties[i] = [attacki, defensei] 表示游戏中第 i 个角色的属性。如果存在一个其他角色的攻击和防御等级 都严格高于 该角色的攻击和防御等级,则认为该角色为 弱角色 。更正式地,如果认为角色
i 弱于 存在的另一个角色 j ,那么 attackj > attacki 且 defensej > defensei 。返回 弱角色 的数量。
Example
输入:properties = [[5,5],[6,3],[3,6]]
输出:0
解释:不存在攻击和防御都严格高于其他角色的角色。
Leetcode-cn.com 2022-01-29
🟡 1765.map-of-highest-peak
🏷️ Tags
#breadth_first_search #array #matrix
Description
给你一个大小为
如果
如果
你需要按照如下规则给每个单元格安排高度:
每个格子的高度都必须是非负的。
如果一个格子是是 水域 ,那么它的高度必须为
任意相邻的格子高度差 至多 为
找到一种安排高度的方案,使得矩阵中的最高高度值 最大 。
请你返回一个大小为
Example
🟡 1765.map-of-highest-peak
🏷️ Tags
#breadth_first_search #array #matrix
Description
给你一个大小为
m x n 的整数矩阵 isWater ,它代表了一个由 陆地 和 水域 单元格组成的地图。如果
isWater[i][j] == 0 ,格子 (i, j) 是一个 陆地 格子。如果
isWater[i][j] == 1 ,格子 (i, j) 是一个 水域 格子。你需要按照如下规则给每个单元格安排高度:
每个格子的高度都必须是非负的。
如果一个格子是是 水域 ,那么它的高度必须为
0 。任意相邻的格子高度差 至多 为
1 。当两个格子在正东、南、西、北方向上相互紧挨着,就称它们为相邻的格子。(也就是说它们有一条公共边)找到一种安排高度的方案,使得矩阵中的最高高度值 最大 。
请你返回一个大小为
m x n 的整数矩阵 height ,其中 height[i][j] 是格子 (i, j) 的高度。如果有多种解法,请返回 任意一个 。Example
输入:isWater = [[0,1],[0,0]]
输出:[[1,0],[2,1]]
解释:上图展示了给各个格子安排的高度。
蓝色格子是水域格,绿色格子是陆地格。
Leetcode-cn.com 2022-01-30
🟢 884.uncommon-words-from-two-sentences
🏷️ Tags
#hash_table #string
Description
句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。
如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。
给你两个 句子
Example
🟢 884.uncommon-words-from-two-sentences
🏷️ Tags
#hash_table #string
Description
句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。
如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。
给你两个 句子
s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。Example
输入:s1 = "this apple is sweet", s2 = "this apple is sour"
输出:["sweet","sour"]
Leetcode-cn.com 2022-01-31
🟢 1342.number-of-steps-to-reduce-a-number-to-zero
🏷️ Tags
#bit_manipulation #math
Description
给你一个非负整数
Example
🟢 1342.number-of-steps-to-reduce-a-number-to-zero
🏷️ Tags
#bit_manipulation #math
Description
给你一个非负整数
num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。Example
输入:num = 14
输出:6
解释:
步骤 1) 14 是偶数,除以 2 得到 7 。
步骤 2) 7 是奇数,减 1 得到 6 。
步骤 3) 6 是偶数,除以 2 得到 3 。
步骤 4) 3 是奇数,减 1 得到 2 。
步骤 5) 2 是偶数,除以 2 得到 1 。
步骤 6) 1 是奇数,减 1 得到 0 。
Leetcode-cn.com 2022-02-01
🟢 1763.longest-nice-substring
🏷️ Tags
#bit_manipulation #hash_table #string #sliding_window
Description
当一个字符串
给你一个字符串
Example
🟢 1763.longest-nice-substring
🏷️ Tags
#bit_manipulation #hash_table #string #sliding_window
Description
当一个字符串
s 包含的每一种字母的大写和小写形式 同时 出现在 s 中,就称这个字符串 s 是 美好 字符串。比方说,"abABB" 是美好字符串,因为 'A' 和 'a' 同时出现了,且 'B' 和 'b' 也同时出现了。然而,"abA" 不是美好字符串因为 'b' 出现了,而 'B' 没有出现。给你一个字符串
s ,请你返回 s 最长的 美好子字符串 。如果有多个答案,请你返回 最早 出现的一个。如果不存在美好子字符串,请你返回一个空字符串。Example
输入:s = "YazaAay"
输出:"aAa"
解释:"aAa" 是一个美好字符串,因为这个子串中仅含一种字母,其小写形式 'a' 和大写形式 'A' 也同时出现了。
"aAa" 是最长的美好子字符串。
Leetcode-cn.com 2022-02-02
🟢 2000.reverse-prefix-of-word
🏷️ Tags
#two_pointers #string
Description
给你一个下标从 0 开始的字符串
例如,如果
返回 结果字符串 。
Example
🟢 2000.reverse-prefix-of-word
🏷️ Tags
#two_pointers #string
Description
给你一个下标从 0 开始的字符串
word 和一个字符 ch 。找出 ch 第一次出现的下标 i ,反转 word 中从下标 0 开始、直到下标 i 结束(含下标 i )的那段字符。如果 word 中不存在字符 ch ,则无需进行任何操作。例如,如果
word = "abcdefd" 且 ch = "d" ,那么你应该 反转 从下标 0 开始、直到下标 3 结束(含下标 3 )。结果字符串将会是 "dcbaefd" 。返回 结果字符串 。
Example
输入:word = "abcdefd", ch = "d"
输出:"dcbaefd"
解释:"d" 第一次出现在下标 3 。
反转从下标 0 到下标 3(含下标 3)的这段字符,结果字符串是 "dcbaefd" 。
Leetcode-cn.com 2022-02-03
🟡 1414.find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k
🏷️ Tags
#greedy
Description
给你数字
斐波那契数字定义为:
F1 = 1
F2 = 1
Fn = Fn-1 + Fn-2 , 其中 n > 2 。
数据保证对于给定的
Example
🟡 1414.find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k
🏷️ Tags
#greedy
Description
给你数字
k ,请你返回和为 k 的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次。斐波那契数字定义为:
F1 = 1
F2 = 1
Fn = Fn-1 + Fn-2 , 其中 n > 2 。
数据保证对于给定的
k ,一定能找到可行解。Example
输入:k = 7
输出:2
解释:斐波那契数字为:1,1,2,3,5,8,13,……
对于 k = 7 ,我们可以得到 2 + 5 = 7 。
Leetcode-cn.com 2022-02-05
🟡 1219.path-with-maximum-gold
🏷️ Tags
#array #backtracking #matrix
Description
你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为
为了使收益最大化,矿工需要按以下规则来开采黄金:
每当矿工进入一个单元,就会收集该单元格中的所有黄金。
矿工每次可以从当前位置向上下左右四个方向走。
每个单元格只能被开采(进入)一次。
不得开采(进入)黄金数目为
矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止。
Example
🟡 1219.path-with-maximum-gold
🏷️ Tags
#array #backtracking #matrix
Description
你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为
m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。为了使收益最大化,矿工需要按以下规则来开采黄金:
每当矿工进入一个单元,就会收集该单元格中的所有黄金。
矿工每次可以从当前位置向上下左右四个方向走。
每个单元格只能被开采(进入)一次。
不得开采(进入)黄金数目为
0 的单元格。矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止。
Example
输入:grid = [[0,6,0],[5,8,7],[0,9,0]]
输出:24
解释:
[[0,6,0],
[5,8,7],
[0,9,0]]
一种收集最多黄金的路线是:9 -> 8 -> 7。
Leetcode-cn.com 2022-02-06
🟢 1748.sum-of-unique-elements
🏷️ Tags
#array #hash_table #counting
Description
给你一个整数数组
请你返回
Example
🟢 1748.sum-of-unique-elements
🏷️ Tags
#array #hash_table #counting
Description
给你一个整数数组
nums 。数组中唯一元素是那些只出现 恰好一次 的元素。请你返回
nums 中唯一元素的 和 。Example
输入:nums = [1,2,3,2]
输出:4
解释:唯一元素为 [1,3] ,和为 4 。
Leetcode-cn.com 2022-02-07
🟡 1405.longest-happy-string
🏷️ Tags
#greedy #string #heap_priority_queue
Description
如果字符串中不含有任何
给你三个整数
如果不存在这样的字符串
Example
🟡 1405.longest-happy-string
🏷️ Tags
#greedy #string #heap_priority_queue
Description
如果字符串中不含有任何
'aaa','bbb' 或 'ccc' 这样的字符串作为子串,那么该字符串就是一个「快乐字符串」。给你三个整数
a,b ,c,请你返回 任意一个 满足下列全部条件的字符串 s:s 是一个尽可能长的快乐字符串。s 中 最多 有a 个字母 'a'、b 个字母 'b'、c 个字母 'c' 。s 中只含有 'a'、'b' 、'c' 三种字母。如果不存在这样的字符串
s ,请返回一个空字符串 ""。Example
输入:a = 1, b = 1, c = 7
输出:"ccaccbcc"
解释:"ccbccacc" 也是一种正确答案。
Leetcode-cn.com 2022-02-08
🔴 1001.grid-illumination
🏷️ Tags
#array #hash_table
Description
在大小为
给你一个由灯的位置组成的二维数组
当一盏灯处于打开状态,它将会照亮 自身所在单元格 以及同一 行 、同一 列 和两条 对角线 上的 所有其他单元格 。
另给你一个二维数组
返回一个整数数组
Example
🔴 1001.grid-illumination
🏷️ Tags
#array #hash_table
Description
在大小为
n x n 的网格 grid 上,每个单元格都有一盏灯,最初灯都处于 关闭 状态。给你一个由灯的位置组成的二维数组
lamps ,其中 lamps[i] = [rowi, coli] 表示 打开 位于 grid[rowi][coli] 的灯。即便同一盏灯可能在 lamps 中多次列出,不会影响这盏灯处于 打开 状态。当一盏灯处于打开状态,它将会照亮 自身所在单元格 以及同一 行 、同一 列 和两条 对角线 上的 所有其他单元格 。
另给你一个二维数组
queries ,其中 queries[j] = [rowj, colj] 。对于第 j 个查询,如果单元格 [rowj, colj] 是被照亮的,则查询结果为 1 ,否则为 0 。在第 j 次查询之后 [按照查询的顺序] ,关闭 位于单元格 grid[rowj][colj] 上及相邻 8 个方向上(与单元格 grid[rowi][coli] 共享角或边)的任何灯。返回一个整数数组
ans 作为答案, ans[j] 应等于第 j 次查询 queries[j] 的结果,1 表示照亮,0 表示未照亮。Example
输入:n = 5, lamps = [[0,0],[4,4]], queries = [[1,1],[1,0]]
输出:[1,0]
解释:最初所有灯都是关闭的。在执行查询之前,打开位于 [0, 0] 和 [4, 4] 的灯。第 0 次查询检查 grid[1][1] 是否被照亮(蓝色方框)。该单元格被照亮,所以 ans[0] = 1 。然后,关闭红色方框中的所有灯。
第 1 次查询检查 grid[1][0] 是否被照亮(蓝色方框)。该单元格没有被照亮,所以 ans[1] = 0 。然后,关闭红色矩形中的所有灯。
Leetcode-cn.com 2022-02-09
🟢 2006.count-number-of-pairs-with-absolute-difference-k
🏷️ Tags
#array #hash_table #counting
Description
给你一个整数数组
如果
如果
Example
🟢 2006.count-number-of-pairs-with-absolute-difference-k
🏷️ Tags
#array #hash_table #counting
Description
给你一个整数数组
nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k 。|x| 的值定义为:如果
x >= 0 ,那么值为 x 。如果
x < 0 ,那么值为 -x 。Example
输入:nums = [1,2,2,1], k = 1
输出:4
解释:差的绝对值为 1 的数对为:
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]