Leetcode-cn.com 2022-05-22
🟡 464.can-i-win
🏷️ Tags
#bit_manipulation #memoization #math #dynamic_programming #bitmask #game_theory
Description
在 "100 game" 这个游戏中,两名玩家轮流选择从
如果我们将游戏规则改为 “玩家 不能 重复使用整数” 呢?
例如,两个玩家可以轮流从公共整数池中抽取从 1 到 15 的整数(不放回),直到累计整数和 >= 100。
给定两个整数
Example
🟡 464.can-i-win
🏷️ Tags
#bit_manipulation #memoization #math #dynamic_programming #bitmask #game_theory
Description
在 "100 game" 这个游戏中,两名玩家轮流选择从
1 到 10 的任意整数,累计整数和,先使得累计整数和 达到或超过 100 的玩家,即为胜者。如果我们将游戏规则改为 “玩家 不能 重复使用整数” 呢?
例如,两个玩家可以轮流从公共整数池中抽取从 1 到 15 的整数(不放回),直到累计整数和 >= 100。
给定两个整数
maxChoosableInteger (整数池中可选择的最大数)和 desiredTotal(累计和),若先出手的玩家是否能稳赢则返回 true ,否则返回 false 。假设两位玩家游戏时都表现 最佳 。Example
输入:maxChoosableInteger = 10, desiredTotal = 11
输出:false
解释:
无论第一个玩家选择哪个整数,他都会失败。
第一个玩家可以选择从 1 到 10 的整数。
如果第一个玩家选择 1,那么第二个玩家只能选择从 2 到 10 的整数。
第二个玩家可以通过选择整数 10(那么累积和为 11 >= desiredTotal),从而取得胜利.
同样地,第一个玩家选择任意其他整数,第二个玩家都会赢。
Leetcode-cn.com 2022-05-23
🔴 675.cut-off-trees-for-golf-event
🏷️ Tags
#breadth_first_search #array #matrix #heap_priority_queue
Description
你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个
每一步,你都可以向上、下、左、右四个方向之一移动一个单位,如果你站的地方有一棵树,那么你可以决定是否要砍倒它。
你需要按照树的高度从低向高砍掉所有的树,每砍过一颗树,该单元格的值变为
你将从
可以保证的是,没有两棵树的高度是相同的,并且你至少需要砍倒一棵树。
Example
🔴 675.cut-off-trees-for-golf-event
🏷️ Tags
#breadth_first_search #array #matrix #heap_priority_queue
Description
你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个
m x n 的矩阵表示, 在这个矩阵中:0 表示障碍,无法触碰1 表示地面,可以行走比 1 大的数 表示有树的单元格,可以行走,数值表示树的高度每一步,你都可以向上、下、左、右四个方向之一移动一个单位,如果你站的地方有一棵树,那么你可以决定是否要砍倒它。
你需要按照树的高度从低向高砍掉所有的树,每砍过一颗树,该单元格的值变为
1(即变为地面)。你将从
(0, 0) 点开始工作,返回你砍完所有树需要走的最小步数。 如果你无法砍完所有的树,返回 -1 。可以保证的是,没有两棵树的高度是相同的,并且你至少需要砍倒一棵树。
Example
输入:forest = [[1,2,3],[0,0,4],[7,6,5]]
输出:6
解释:沿着上面的路径,你可以用 6 步,按从最矮到最高的顺序砍掉这些树。
Leetcode-cn.com 2022-05-24
🟢 965.univalued-binary-tree
🏷️ Tags
#tree #depth_first_search #breadth_first_search #binary_tree
Description
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回
Example
🟢 965.univalued-binary-tree
🏷️ Tags
#tree #depth_first_search #breadth_first_search #binary_tree
Description
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回
true;否则返回 false。Example
输入:[1,1,1,1,1,null,1]
输出:true
Leetcode-cn.com 2022-05-25
🟡 467.unique-substrings-in-wraparound-string
🏷️ Tags
#string #dynamic_programming
Description
把字符串
现在给定另一个字符串
Example
🟡 467.unique-substrings-in-wraparound-string
🏷️ Tags
#string #dynamic_programming
Description
把字符串
s 看作是 “abcdefghijklmnopqrstuvwxyz” 的无限环绕字符串,所以 s 看起来是这样的:"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd...." . 现在给定另一个字符串
p 。返回 s 中 唯一 的 p 的 非空子串 的数量 。 Example
输入: p = "a"
输出: 1
解释: 字符串 s 中只有一个"a"子字符。
Leetcode-cn.com 2022-05-26
🔴 699.falling-squares
🏷️ Tags
#segment_tree #array #ordered_set
Description
在无限长的数轴(即 x 轴)上,我们根据给定的顺序放置对应的正方形方块。
第
每个方块的底部边缘平行于数轴(即 x 轴),并且从一个比目前所有的落地方块更高的高度掉落而下。在上一个方块结束掉落,并保持静止后,才开始掉落新方块。
方块的底边具有非常大的粘性,并将保持固定在它们所接触的任何长度表面上(无论是数轴还是其他方块)。邻接掉落的边不会过早地粘合在一起,
Example
🔴 699.falling-squares
🏷️ Tags
#segment_tree #array #ordered_set
Description
在无限长的数轴(即 x 轴)上,我们根据给定的顺序放置对应的正方形方块。
第
i 个掉落的方块(positions[i] = (left, side_length))是正方形,其中 left 表示该方块最左边的点位置(positions[i][0]),side_length 表示该方块的边长(positions[i][1])。每个方块的底部边缘平行于数轴(即 x 轴),并且从一个比目前所有的落地方块更高的高度掉落而下。在上一个方块结束掉落,并保持静止后,才开始掉落新方块。
方块的底边具有非常大的粘性,并将保持固定在它们所接触的任何长度表面上(无论是数轴还是其他方块)。邻接掉落的边不会过早地粘合在一起,
因为只有底边才具有粘性。Example
输入: [[1, 2], [2, 3], [6, 1]]
输出: [2, 5, 5]
解释:
第一个方块 positions[0] = [1, 2] 掉落:
_aa
_aa
-------
方块最大高度为 2 。
第二个方块 positions[1] = [2, 3] 掉落:
__aaa
__aaa
__aaa
_aa__
_aa__
--------------
方块最大高度为5。
大的方块保持在较小的方块的顶部,不论它的重心在哪里,因为方块的底部边缘有非常大的粘性。
第三个方块 positions[1] = [6, 1] 掉落:
__aaa
__aaa
__aaa
_aa
_aa___a
--------------
方块最大高度为5。
因此,我们返回结果[2, 5, 5]。
Leetcode-cn.com 2022-05-27
🟡 面试题 17.11.find-closest-lcci
🏷️ Tags
#array #string
Description
有个内含单词的超大文本文件,给定任意两个
Example
🟡 面试题 17.11.find-closest-lcci
🏷️ Tags
#array #string
Description
有个内含单词的超大文本文件,给定任意两个
不同的单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?Example
输入:words = ["I","am","a","student","from","a","university","in","a","city"], word1 = "a", word2 = "student"
输出:1
Leetcode-cn.com 2022-05-28
🟢 1021.remove-outermost-parentheses
🏷️ Tags
#stack #string
Description
有效括号字符串为空
例如,
如果有效字符串
给出一个非空有效字符串
对
Example
🟢 1021.remove-outermost-parentheses
🏷️ Tags
#stack #string
Description
有效括号字符串为空
""、"(" + A + ")" 或 A + B ,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,
"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。如果有效字符串
s 非空,且不存在将其拆分为 s = A + B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。给出一个非空有效字符串
s,考虑将其进行原语化分解,使得:s = P_1 + P_2 + ... + P_k,其中 P_i 是有效括号字符串原语。对
s 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 s 。Example
输入:s = "(()())(())"
输出:"()()()"
解释:
输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())",
删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。
Leetcode-cn.com 2022-05-29
🟡 468.validate-ip-address
🏷️ Tags
#string
Description
给定一个字符串
有效的IPv4地址 是
一个有效的IPv6地址 是一个格式为
在
例如
Example
🟡 468.validate-ip-address
🏷️ Tags
#string
Description
给定一个字符串
queryIP。如果是有效的 IPv4 地址,返回 "IPv4" ;如果是有效的 IPv6 地址,返回 "IPv6" ;如果不是上述类型的 IP 地址,返回 "Neither" 。有效的IPv4地址 是
“x1.x2.x3.x4” 形式的IP地址。 其中 0 <= xi <= 255 且 xi 不能包含 前导零。例如: “192.168.1.1” 、 “192.168.1.0” 为有效IPv4地址, “192.168.01.1” 为无效IPv4地址; “192.168.1.00” 、 “192.168@1.1” 为无效IPv4地址。一个有效的IPv6地址 是一个格式为
“x1:x2:x3:x4:x5:x6:x7:x8” 的IP地址,其中:1 <= xi.length <= 4xi 是一个 十六进制字符串 ,可以包含数字、小写英文字母( 'a' 到 'f' )和大写英文字母( 'A' 到 'F' )。在
xi 中允许前导零。例如
"2001:0db8:85a3:0000:0000:8a2e:0370:7334" 和 "2001:db8:85a3:0:0:8A2E:0370:7334" 是有效的 IPv6 地址,而 "2001:0db8:85a3::8A2E:037j:7334" 和 "02001:0db8:85a3:0000:0000:8a2e:0370:7334" 是无效的 IPv6 地址。Example
输入:queryIP = "172.16.254.1"
输出:"IPv4"
解释:有效的 IPv4 地址,返回 "IPv4"
Leetcode-cn.com 2022-05-30
🟢 1022.sum-of-root-to-leaf-binary-numbers
🏷️ Tags
#tree #depth_first_search #binary_tree
Description
给出一棵二叉树,其上每个结点的值都是
例如,如果路径为
对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。
返回这些数字之和。题目数据保证答案是一个 32 位 整数。
Example
🟢 1022.sum-of-root-to-leaf-binary-numbers
🏷️ Tags
#tree #depth_first_search #binary_tree
Description
给出一棵二叉树,其上每个结点的值都是
0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为
0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。
返回这些数字之和。题目数据保证答案是一个 32 位 整数。
Example
输入:root = [1,0,1,0,1,0,1]
输出:22
解释:(100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22
Leetcode-cn.com 2022-05-31
🔴 剑指 Offer II 114.Jf1JuT
🏷️ Tags
#depth_first_search #breadth_first_search #graph #topological_sort #array #string
Description
现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。
给定一个字符串列表
请你根据该词典还原出此语言中已知的字母顺序,并 按字母递增顺序 排列。若不存在合法字母顺序,返回
字符串
在第一个不同字母处,如果
如果前面
Example
🔴 剑指 Offer II 114.Jf1JuT
🏷️ Tags
#depth_first_search #breadth_first_search #graph #topological_sort #array #string
Description
现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。
给定一个字符串列表
words ,作为这门语言的词典,words 中的字符串已经 按这门新语言的字母顺序进行了排序 。请你根据该词典还原出此语言中已知的字母顺序,并 按字母递增顺序 排列。若不存在合法字母顺序,返回
"" 。若存在多种可能的合法字母顺序,返回其中 任意一种 顺序即可。字符串
s 字典顺序小于 字符串 t 有两种情况:在第一个不同字母处,如果
s 中的字母在这门外星语言的字母顺序中位于 t 中字母之前,那么 s 的字典顺序小于 t 。如果前面
min(s.length, t.length) 字母都相同,那么 s.length < t.length 时,s 的字典顺序也小于 t 。Example
输入:words = ["wrt","wrf","er","ett","rftt"]
输出:"wertf"
Leetcode-cn.com 2022-06-01
🟡 473.matchsticks-to-square
🏷️ Tags
#bit_manipulation #array #dynamic_programming #backtracking #bitmask
Description
你将得到一个整数数组
如果你能使这个正方形,则返回
Example
🟡 473.matchsticks-to-square
🏷️ Tags
#bit_manipulation #array #dynamic_programming #backtracking #bitmask
Description
你将得到一个整数数组
matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。如果你能使这个正方形,则返回
true ,否则返回 false 。Example
输入: matchsticks = [1,1,2,2,2]
输出: true
解释: 能拼成一个边长为2的正方形,每边两根火柴。
Leetcode-cn.com 2022-06-02
🟡 450.delete-node-in-a-bst
🏷️ Tags
#tree #binary_search_tree #binary_tree
Description
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。
一般来说,删除节点可分为两个步骤:
首先找到需要删除的节点;
如果找到了,删除它。
Example
🟡 450.delete-node-in-a-bst
🏷️ Tags
#tree #binary_search_tree #binary_tree
Description
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。
一般来说,删除节点可分为两个步骤:
首先找到需要删除的节点;
如果找到了,删除它。
Example
输入:root = [5,3,6,2,4,null,7], key = 3
输出:[5,4,6,2,null,null,7]
解释:给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。
一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。
另一个正确答案是 [5,2,6,null,4,null,7]。
Leetcode-cn.com 2022-06-03
🔴 829.consecutive-numbers-sum
🏷️ Tags
#math #enumeration
Description
给定一个正整数
示例 1:
Example
🔴 829.consecutive-numbers-sum
🏷️ Tags
#math #enumeration
Description
给定一个正整数
n,返回 连续正整数满足所有数字之和为 n 的组数 。 示例 1:
输入: n = 5
输出: 2
解释: 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。
Example
输入: n = 5
输出: 2
解释: 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。
Leetcode-cn.com 2022-06-04
🟢 929.unique-email-addresses
🏷️ Tags
#array #hash_table #string
Description
每个 有效电子邮件地址 都由一个 本地名 和一个 域名 组成,以
例如,在
如果在电子邮件地址的 本地名 部分中的某些字符之间添加句点(
例如,
如果在 本地名 中添加加号(
例如
可以同时使用这两个规则。
给你一个字符串数组
Example
🟢 929.unique-email-addresses
🏷️ Tags
#array #hash_table #string
Description
每个 有效电子邮件地址 都由一个 本地名 和一个 域名 组成,以
'@' 符号分隔。除小写字母之外,电子邮件地址还可以含有一个或多个 '.' 或 '+' 。例如,在
alice@leetcode.com中, alice 是 本地名 ,而 leetcode.com 是 域名 。如果在电子邮件地址的 本地名 部分中的某些字符之间添加句点(
'.'),则发往那里的邮件将会转发到本地名中没有点的同一地址。请注意,此规则 不适用于域名 。例如,
"alice.z@leetcode.com” 和 “alicez@leetcode.com” 会转发到同一电子邮件地址。如果在 本地名 中添加加号(
'+'),则会忽略第一个加号后面的所有内容。这允许过滤某些电子邮件。同样,此规则 不适用于域名 。例如
m.y+name@email.com 将转发到 my@email.com。可以同时使用这两个规则。
给你一个字符串数组
emails,我们会向每个 emails[i] 发送一封电子邮件。返回实际收到邮件的不同地址数目。Example
输入:emails = ["test.email+alex@leetcode.com","test.e.mail+bob.cathy@leetcode.com","testemail+david@lee.tcode.com"]
输出:2
解释:实际收到邮件的是 "testemail@leetcode.com" 和 "testemail@lee.tcode.com"。
Leetcode-cn.com 2022-06-05
🟡 478.generate-random-point-in-a-circle
🏷️ Tags
#geometry #math #rejection_sampling #randomized
Description
给定圆的半径和圆心的位置,实现函数
实现
Example
🟡 478.generate-random-point-in-a-circle
🏷️ Tags
#geometry #math #rejection_sampling #randomized
Description
给定圆的半径和圆心的位置,实现函数
randPoint ,在圆中产生均匀随机点。实现
Solution 类:Solution(double radius, double x_center, double y_center) 用圆的半径 radius 和圆心的位置 (x_center, y_center) 初始化对象randPoint() 返回圆内的一个随机点。圆周上的一点被认为在圆内。答案作为数组返回 [x, y] 。Example
输入:
["Solution","randPoint","randPoint","randPoint"]
[[1.0, 0.0, 0.0], [], [], []]
输出: [null, [-0.02493, -0.38077], [0.82314, 0.38945], [0.36572, 0.17248]]
解释:
Solution solution = new Solution(1.0, 0.0, 0.0);
solution.randPoint ();//返回[-0.02493,-0.38077]
solution.randPoint ();//返回[0.82314,0.38945]
solution.randPoint ();//返回[0.36572,0.17248]
Leetcode-cn.com 2022-06-06
🔴 732.my-calendar-iii
🏷️ Tags
#design #segment_tree #ordered_set
Description
当
给你一些日程安排
实现一个
Example
🔴 732.my-calendar-iii
🏷️ Tags
#design #segment_tree #ordered_set
Description
当
k 个日程安排有一些时间上的交叉时(例如 k 个日程安排都在同一时间内),就会产生 k 次预订。给你一些日程安排
[start, end) ,请你在每个日程安排添加后,返回一个整数 k ,表示所有先前日程安排会产生的最大 k 次预订。实现一个
MyCalendarThree 类来存放你的日程安排,你可以一直添加新的日程安排。MyCalendarThree() 初始化对象。int book(int start, int end) 返回一个整数 k ,表示日历中存在的 k 次预订的最大值。Example
输入:
["MyCalendarThree", "book", "book", "book", "book", "book", "book"]
[[], [10, 20], [50, 60], [10, 40], [5, 15], [5, 10], [25, 55]]
输出:
[null, 1, 1, 2, 3, 3, 3]
解释:
MyCalendarThree myCalendarThree = new MyCalendarThree();
myCalendarThree.book(10, 20); // 返回 1 ,第一个日程安排可以预订并且不存在相交,所以最大 k 次预订是 1 次预订。
myCalendarThree.book(50, 60); // 返回 1 ,第二个日程安排可以预订并且不存在相交,所以最大 k 次预订是 1 次预订。
myCalendarThree.book(10, 40); // 返回 2 ,第三个日程安排 [10, 40) 与第一个日程安排相交,所以最大 k 次预订是 2 次预订。
myCalendarThree.book(5, 15); // 返回 3 ,剩下的日程安排的最大 k 次预订是 3 次预订。
myCalendarThree.book(5, 10); // 返回 3
myCalendarThree.book(25, 55); // 返回 3
Leetcode-cn.com 2022-06-07
🟡 875.koko-eating-bananas
🏷️ Tags
#array #binary_search
Description
珂珂喜欢吃香蕉。这里有
珂珂可以决定她吃香蕉的速度
珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。
返回她可以在
Example
🟡 875.koko-eating-bananas
🏷️ Tags
#array #binary_search
Description
珂珂喜欢吃香蕉。这里有
n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 h 小时后回来。珂珂可以决定她吃香蕉的速度
k (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 k 根。如果这堆香蕉少于 k 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。
返回她可以在
h 小时内吃掉所有香蕉的最小速度 k(k 为整数)。Example
输入:piles = [3,6,7,11], h = 8
输出:4
Leetcode-cn.com 2022-06-09
🟡 497.random-point-in-non-overlapping-rectangles
🏷️ Tags
#reservoir_sampling #math #binary_search #ordered_set #prefix_sum #randomized
Description
给定一个由非重叠的轴对齐矩形的数组
在一个给定的矩形覆盖的空间内任何整数点都有可能被返回。
请注意 ,整数点是具有整数坐标的点。
实现
Example
🟡 497.random-point-in-non-overlapping-rectangles
🏷️ Tags
#reservoir_sampling #math #binary_search #ordered_set #prefix_sum #randomized
Description
给定一个由非重叠的轴对齐矩形的数组
rects ,其中 rects[i] = [ai, bi, xi, yi] 表示 (ai, bi) 是第 i 个矩形的左下角点,(xi, yi) 是第 i 个矩形的右上角角点。设计一个算法来随机挑选一个被某一矩形覆盖的整数点。矩形周长上的点也算做是被矩形覆盖。所有满足要求的点必须等概率被返回。在一个给定的矩形覆盖的空间内任何整数点都有可能被返回。
请注意 ,整数点是具有整数坐标的点。
实现
Solution 类:Solution(int[][] rects) 用给定的矩形数组 rects 初始化对象。int[] pick() 返回一个随机的整数点 [u, v] 在给定的矩形所覆盖的空间内。Example
输入:
["Solution","pick","pick","pick","pick","pick"]
[[[[-2,-2,-1,-1],[1,0,3,0]]],[],[],[],[],[]]
输出:
[null,[-1,-2],[2,0],[-2,-1],[3,0],[-2,-2]
解释:
Solution solution = new Solution([[-2, -2, 1, 1], [2, 2, 4, 6]]);
solution.pick(); // 返回 [1, -2]
solution.pick(); // 返回 [1, -1]
solution.pick(); // 返回 [-1, -2]
solution.pick(); // 返回 [-2, -2]
solution.pick(); // 返回 [0, 0]
Leetcode-cn.com 2022-06-10
🔴 730.count-different-palindromic-subsequences
🏷️ Tags
#string #dynamic_programming
Description
给定一个字符串 s,返回
通过从 s 中删除 0 个或多个字符来获得子序列。
如果一个字符序列与它反转后的字符序列一致,那么它是「回文字符序列」。
如果有某个
注意:
结果可能很大,你需要对
Example
🔴 730.count-different-palindromic-subsequences
🏷️ Tags
#string #dynamic_programming
Description
给定一个字符串 s,返回
s 中不同的非空「回文子序列」个数 。通过从 s 中删除 0 个或多个字符来获得子序列。
如果一个字符序列与它反转后的字符序列一致,那么它是「回文字符序列」。
如果有某个
i , 满足 ai != bi ,则两个序列 a1, a2, ... 和 b1, b2, ... 不同。注意:
结果可能很大,你需要对
109 + 7 取模 。Example
输入:s = 'bccb'
输出:6
解释:6 个不同的非空回文子字符序列分别为:'b', 'c', 'bb', 'cc', 'bcb', 'bccb'。
注意:'bcb' 虽然出现两次但仅计数一次。
Leetcode-cn.com 2022-06-11
🟡 926.flip-string-to-monotone-increasing
🏷️ Tags
#string #dynamic_programming
Description
如果一个二进制字符串,是以一些
给你一个二进制字符串
返回使
Example
🟡 926.flip-string-to-monotone-increasing
🏷️ Tags
#string #dynamic_programming
Description
如果一个二进制字符串,是以一些
0(可能没有 0)后面跟着一些 1(也可能没有 1)的形式组成的,那么该字符串是 单调递增 的。给你一个二进制字符串
s,你可以将任何 0 翻转为 1 或者将 1 翻转为 0 。返回使
s 单调递增的最小翻转次数。Example
输入:s = "00110"
输出:1
解释:翻转最后一位得到 00111.
Leetcode-cn.com 2022-06-12
🟡 890.find-and-replace-pattern
🏷️ Tags
#array #hash_table #string
Description
你有一个单词列表
如果存在字母的排列
(回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母映射到同一个字母。)
返回
你可以按任何顺序返回答案。
Example
🟡 890.find-and-replace-pattern
🏷️ Tags
#array #hash_table #string
Description
你有一个单词列表
words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。如果存在字母的排列
p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。(回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母映射到同一个字母。)
返回
words 中与给定模式匹配的单词列表。你可以按任何顺序返回答案。
Example
输入:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"
输出:["mee","aqq"]
解释:
"mee" 与模式匹配,因为存在排列 {a -> m, b -> e, ...}。
"ccc" 与模式不匹配,因为 {a -> c, b -> c, ...} 不是排列。
因为 a 和 b 映射到同一个字母。