Leetcode-cn.com 2022-02-22
🔴 1994.the-number-of-good-subsets
🏷️ Tags
#bit_manipulation #array #math #dynamic_programming #bitmask
Description
给你一个整数数组
比方说,如果
请你返回
Example
🔴 1994.the-number-of-good-subsets
🏷️ Tags
#bit_manipulation #array #math #dynamic_programming #bitmask
Description
给你一个整数数组
nums 。如果 nums 的一个子集中,所有元素的乘积可以表示为一个或多个 互不相同的质数 的乘积,那么我们称它为 好子集 。比方说,如果
nums = [1, 2, 3, 4] :[2, 3] ,[1, 2, 3] 和 [1, 3] 是 好 子集,乘积分别为 6 = 2*3 ,6 = 2*3 和 3 = 3 。[1, 4] 和 [4] 不是 好 子集,因为乘积分别为 4 = 2*2 和 4 = 2*2 。请你返回
nums 中不同的 好 子集的数目对 109 + 7 取余 的结果。nums 中的 子集 是通过删除 nums 中一些(可能一个都不删除,也可能全部都删除)元素后剩余元素组成的数组。如果两个子集删除的下标不同,那么它们被视为不同的子集。Example
输入:nums = [1,2,3,4]
输出:6
解释:好子集为:
- [1,2]:乘积为 2 ,可以表示为质数 2 的乘积。
- [1,2,3]:乘积为 6 ,可以表示为互不相同的质数 2 和 3 的乘积。
- [1,3]:乘积为 3 ,可以表示为质数 3 的乘积。
- [2]:乘积为 2 ,可以表示为质数 2 的乘积。
- [2,3]:乘积为 6 ,可以表示为互不相同的质数 2 和 3 的乘积。
- [3]:乘积为 3 ,可以表示为质数 3 的乘积。
Leetcode-cn.com 2022-02-23
🟢 917.reverse-only-letters
🏷️ Tags
#two_pointers #string
Description
给你一个字符串
所有非英文字母保留在原有位置。
所有英文字母(小写或大写)位置反转。
返回反转后的
Example
🟢 917.reverse-only-letters
🏷️ Tags
#two_pointers #string
Description
给你一个字符串
s ,根据下述规则反转字符串:所有非英文字母保留在原有位置。
所有英文字母(小写或大写)位置反转。
返回反转后的
s 。Example
输入:s = "ab-cd"
输出:"dc-ba"
Leetcode-cn.com 2022-02-24
🟡 1706.where-will-the-ball-fall
🏷️ Tags
#depth_first_search #array #dynamic_programming #matrix #simulation
Description
用一个大小为
箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。
将球导向右侧的挡板跨过左上角和右下角,在网格中用
将球导向左侧的挡板跨过右上角和左下角,在网格中用
在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 "V" 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。
返回一个大小为
Example
🟡 1706.where-will-the-ball-fall
🏷️ Tags
#depth_first_search #array #dynamic_programming #matrix #simulation
Description
用一个大小为
m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。
将球导向右侧的挡板跨过左上角和右下角,在网格中用
1 表示。将球导向左侧的挡板跨过右上角和左下角,在网格中用
-1 表示。在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 "V" 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。
返回一个大小为
n 的数组 answer ,其中 answer[i] 是球放在顶部的第 i 列后从底部掉出来的那一列对应的下标,如果球卡在盒子里,则返回 -1 。Example
输入:grid = [[1,1,1,-1,-1],[1,1,1,-1,-1],[-1,-1,-1,1,1],[1,1,1,1,-1],[-1,-1,-1,-1,-1]]
输出:[1,-1,-1,-1,-1]
解释:示例如图:
b0 球开始放在第 0 列上,最终从箱子底部第 1 列掉出。
b1 球开始放在第 1 列上,会卡在第 2、3 列和第 1 行之间的 "V" 形里。
b2 球开始放在第 2 列上,会卡在第 2、3 列和第 0 行之间的 "V" 形里。
b3 球开始放在第 3 列上,会卡在第 2、3 列和第 0 行之间的 "V" 形里。
b4 球开始放在第 4 列上,会卡在第 2、3 列和第 1 行之间的 "V" 形里。
Leetcode-cn.com 2022-02-25
🟡 537.complex-number-multiplication
🏷️ Tags
#math #string #simulation
Description
复数 可以用字符串表示,遵循
给你两个字符串表示的复数
Example
🟡 537.complex-number-multiplication
🏷️ Tags
#math #string #simulation
Description
复数 可以用字符串表示,遵循
"实部+虚部i" 的形式,并满足下述条件:实部 是一个整数,取值范围是 [-100, 100]虚部 也是一个整数,取值范围是 [-100, 100]i2 == -1给你两个字符串表示的复数
num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。Example
输入:num1 = "1+1i", num2 = "1+1i"
输出:"0+2i"
解释:(1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。
百度百科
复数_百度百科
我们把形如 z=a+bi(a、b均为实数)的数称为复数。其中,a 称为实部,b 称为虚部,i 称为虚数单位。当 z 的虚部 b=0 时,则 z 为实数;当 z 的虚部 b≠0 时,实部 a=0 时,常称 z 为纯虚数。复数域是实数域的代数闭包,即任何复系数多项式在复数域中总有根。复数是由意大利米兰学者卡当在16世纪首次引入,经过达朗贝尔、棣莫弗、欧拉、高斯等人的工作,此概念逐渐为数学家所接受。
Leetcode-cn.com 2022-02-26
🟢 2016.maximum-difference-between-increasing-elements
🏷️ Tags
#array
Description
给你一个下标从 0 开始的整数数组
返回 最大差值 。如果不存在满足要求的
Example
🟢 2016.maximum-difference-between-increasing-elements
🏷️ Tags
#array
Description
给你一个下标从 0 开始的整数数组
nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。返回 最大差值 。如果不存在满足要求的
i 和 j ,返回 -1 。Example
输入:nums = [7,1,5,4]
输出:4
解释:
最大差值出现在 i = 1 且 j = 2 时,nums[j] - nums[i] = 5 - 1 = 4 。
注意,尽管 i = 1 且 j = 0 时 ,nums[j] - nums[i] = 7 - 1 = 6 > 4 ,但 i > j 不满足题面要求,所以 6 不是有效的答案。
Leetcode-cn.com 2022-02-27
🟡 553.optimal-division
🏷️ Tags
#array #math #dynamic_programming
Description
给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。
但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。
Example
🟡 553.optimal-division
🏷️ Tags
#array #math #dynamic_programming
Description
给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。
但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。
Example
输入: [1000,100,10,2]
输出: "1000/(100/10/2)"
解释:
1000/(100/10/2) = 1000/((100/10)/2) = 200
但是,以下加粗的括号 "1000/((100/10)/2)" 是冗余的,
因为他们并不影响操作的优先级,所以你需要返回 "1000/(100/10/2)"。
其他用例:
1000/(100/10)/2 = 50
1000/(100/(10/2)) = 50
1000/100/10/2 = 0.5
1000/100/(10/2) = 2
Leetcode-cn.com 2022-02-28
🔴 1601.maximum-number-of-achievable-transfer-requests
🏷️ Tags
#bit_manipulation #array #backtracking #enumeration
Description
我们有
给你一个数组
一开始 所有楼都是满的,所以从请求列表中选出的若干个请求是可行的需要满足 每栋楼员工净变化为 0 。意思是每栋楼 离开 的员工数目 等于 该楼 搬入 的员工数数目。比方说
请你从原请求列表中选出若干个请求,使得它们是一个可行的请求列表,并返回所有可行列表中最大请求数目。
Example
🔴 1601.maximum-number-of-achievable-transfer-requests
🏷️ Tags
#bit_manipulation #array #backtracking #enumeration
Description
我们有
n 栋楼,编号从 0 到 n - 1 。每栋楼有若干员工。由于现在是换楼的季节,部分员工想要换一栋楼居住。给你一个数组
requests ,其中 requests[i] = [fromi, toi] ,表示一个员工请求从编号为 fromi 的楼搬到编号为 toi 的楼。一开始 所有楼都是满的,所以从请求列表中选出的若干个请求是可行的需要满足 每栋楼员工净变化为 0 。意思是每栋楼 离开 的员工数目 等于 该楼 搬入 的员工数数目。比方说
n = 3 且两个员工要离开楼 0 ,一个员工要离开楼 1 ,一个员工要离开楼 2 ,如果该请求列表可行,应该要有两个员工搬入楼 0 ,一个员工搬入楼 1 ,一个员工搬入楼 2 。请你从原请求列表中选出若干个请求,使得它们是一个可行的请求列表,并返回所有可行列表中最大请求数目。
Example
输入:n = 5, requests = [[0,1],[1,0],[0,1],[1,2],[2,0],[3,4]]
输出:5
解释:请求列表如下:
从楼 0 离开的员工为 x 和 y ,且他们都想要搬到楼 1 。
从楼 1 离开的员工为 a 和 b ,且他们分别想要搬到楼 2 和 0 。
从楼 2 离开的员工为 z ,且他想要搬到楼 0 。
从楼 3 离开的员工为 c ,且他想要搬到楼 4 。
没有员工从楼 4 离开。
我们可以让 x 和 b 交换他们的楼,以满足他们的请求。
我们可以让 y,a 和 z 三人在三栋楼间交换位置,满足他们的要求。
所以最多可以满足 5 个请求。
Leetcode-cn.com 2022-03-01
🟡 6.zigzag-conversion
🏷️ Tags
#string
Description
将一个给定字符串
比如输入字符串为
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:
请你实现这个将字符串进行指定行数变换的函数:
Example
🟡 6.zigzag-conversion
🏷️ Tags
#string
Description
将一个给定字符串
s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为
"PAYPALISHIRING" 行数为 3 时,排列如下:
P A H N
A P L S I I G
Y I R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:
"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
Example
输入:s = "PAYPALISHIRING", numRows = 3
输出:"PAHNAPLSIIGYIR"
Leetcode-cn.com 2022-03-02
🔴 564.find-the-closest-palindrome
🏷️ Tags
#math #string
Description
给定一个表示整数的字符串
“最近的”定义为两个整数差的绝对值最小。
Example
🔴 564.find-the-closest-palindrome
🏷️ Tags
#math #string
Description
给定一个表示整数的字符串
n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。“最近的”定义为两个整数差的绝对值最小。
Example
输入: n = "123"
输出: "121"
Leetcode-cn.com 2022-03-03
🟢 258.add-digits
🏷️ Tags
#math #number_theory #simulation
Description
给定一个非负整数
Example
🟢 258.add-digits
🏷️ Tags
#math #number_theory #simulation
Description
给定一个非负整数
num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。Example
输入: num = 38
输出: 2
解释: 各位相加的过程为:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。
Leetcode-cn.com 2022-03-04
🟡 2104.sum-of-subarray-ranges
🏷️ Tags
#stack #array #monotonic_stack
Description
给你一个整数数组
返回
子数组是数组中一个连续 非空 的元素序列。
Example
🟡 2104.sum-of-subarray-ranges
🏷️ Tags
#stack #array #monotonic_stack
Description
给你一个整数数组
nums 。nums 中,子数组的 范围 是子数组中最大元素和最小元素的差值。返回
nums 中 所有 子数组范围的 和 。子数组是数组中一个连续 非空 的元素序列。
Example
输入:nums = [1,2,3]
输出:4
解释:nums 的 6 个子数组如下所示:
[1],范围 = 最大 - 最小 = 1 - 1 = 0
[2],范围 = 2 - 2 = 0
[3],范围 = 3 - 3 = 0
[1,2],范围 = 2 - 1 = 1
[2,3],范围 = 3 - 2 = 1
[1,2,3],范围 = 3 - 1 = 2
所有范围的和是 0 + 0 + 0 + 1 + 1 + 2 = 4
Leetcode-cn.com 2022-03-05
🟢 521.longest-uncommon-subsequence-i
🏷️ Tags
#string
Description
给你两个字符串
「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列) 。
字符串
例如,
Example
🟢 521.longest-uncommon-subsequence-i
🏷️ Tags
#string
Description
给你两个字符串
a 和 b,请返回 这两个字符串中 最长的特殊序列 。如果不存在,则返回 -1 。「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列) 。
字符串
s 的子序列是在从 s 中删除任意数量的字符后可以获得的字符串。例如,
“abc” 是 “aebdc” 的子序列,因为您可以删除 “aebdc” 中的下划线字符来得到 “abc” 。 “aebdc” 的子序列还包括 “aebdc” 、 “aeb” 和 “” (空字符串)。Example
输入: a = "aba", b = "cdc"
输出: 3
解释: 最长特殊序列可为 "aba" (或 "cdc"),两者均为自身的子序列且不是对方的子序列。
Leetcode-cn.com 2022-03-06
🟡 2100.find-good-days-to-rob-the-bank
🏷️ Tags
#array #dynamic_programming #prefix_sum
Description
你和一群强盗准备打劫银行。给你一个下标从 0 开始的整数数组
如果第
第
第
第
更正式的,第
请你返回一个数组,包含 所有 适合打劫银行的日子(下标从 0 开始)。返回的日子可以 任意 顺序排列。
Example
🟡 2100.find-good-days-to-rob-the-bank
🏷️ Tags
#array #dynamic_programming #prefix_sum
Description
你和一群强盗准备打劫银行。给你一个下标从 0 开始的整数数组
security ,其中 security[i] 是第 i 天执勤警卫的数量。日子从 0 开始编号。同时给你一个整数 time 。如果第
i 天满足以下所有条件,我们称它为一个适合打劫银行的日子:第
i 天前和后都分别至少有 time 天。第
i 天前连续 time 天警卫数目都是非递增的。第
i 天后连续 time 天警卫数目都是非递减的。更正式的,第
i 天是一个合适打劫银行的日子当且仅当:security[i - time] >= security[i - time + 1] >= ... >= security[i] <= ... <= security[i + time - 1] <= security[i + time].请你返回一个数组,包含 所有 适合打劫银行的日子(下标从 0 开始)。返回的日子可以 任意 顺序排列。
Example
输入:security = [5,3,3,3,5,6,2], time = 2
输出:[2,3]
解释:
第 2 天,我们有 security[0] >= security[1] >= security[2] <= security[3] <= security[4] 。
第 3 天,我们有 security[1] >= security[2] >= security[3] <= security[4] <= security[5] 。
没有其他日子符合这个条件,所以日子 2 和 3 是适合打劫银行的日子。
Leetcode-cn.com 2022-03-07
🟢 504.base-7
🏷️ Tags
#math
Description
给定一个整数
Example
🟢 504.base-7
🏷️ Tags
#math
Description
给定一个整数
num,将其转化为 7 进制,并以字符串形式输出。Example
输入: num = 100
输出: "202"
Leetcode-cn.com 2022-03-08
🟡 2055.plates-between-candles
🏷️ Tags
#array #string #binary_search #prefix_sum
Description
给你一个长桌子,桌子上盘子和蜡烛排成一列。给你一个下标从 0 开始的字符串
同时给你一个下标从 0 开始的二维整数数组
比方说,
请你返回一个整数数组
Example
🟡 2055.plates-between-candles
🏷️ Tags
#array #string #binary_search #prefix_sum
Description
给你一个长桌子,桌子上盘子和蜡烛排成一列。给你一个下标从 0 开始的字符串
s ,它只包含字符 '*' 和 '|' ,其中 '*' 表示一个 盘子 ,'|' 表示一支 蜡烛 。同时给你一个下标从 0 开始的二维整数数组
queries ,其中 queries[i] = [lefti, righti] 表示 子字符串 s[lefti...righti] (包含左右端点的字符)。对于每个查询,你需要找到 子字符串中 在 两支蜡烛之间 的盘子的 数目 。如果一个盘子在 子字符串中 左边和右边 都 至少有一支蜡烛,那么这个盘子满足在 两支蜡烛之间 。比方说,
s = "||**||**|*" ,查询 [3, 8] ,表示的是子字符串 "*||**|" 。子字符串中在两支蜡烛之间的盘子数目为 2 ,子字符串中右边两个盘子在它们左边和右边 都 至少有一支蜡烛。请你返回一个整数数组
answer ,其中 answer[i] 是第 i 个查询的答案。Example
输入:s = "**|**|***|", queries = [[2,5],[5,9]]
输出:[2,3]
解释:
- queries[0] 有两个盘子在蜡烛之间。
- queries[1] 有三个盘子在蜡烛之间。
Leetcode-cn.com 2022-03-09
🔴 798.smallest-rotation-with-highest-score
🏷️ Tags
#array #prefix_sum
Description
给定一个数组
例如,如果数组为
在所有可能的轮调中,返回我们所能得到的最高分数对应的轮调索引 K。如果有多个答案,返回满足条件的最小的索引 K。
Example
🔴 798.smallest-rotation-with-highest-score
🏷️ Tags
#array #prefix_sum
Description
给定一个数组
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, 0, 2, 4]。这将记作 3 分,因为 1 > 0 [no points], 3 > 1 [no points], 0 <= 2 [one point], 2 <= 3 [one point], 4 <= 4 [one point]。在所有可能的轮调中,返回我们所能得到的最高分数对应的轮调索引 K。如果有多个答案,返回满足条件的最小的索引 K。
Example
输入:[2, 3, 1, 4, 0]
输出:3
解释:
下面列出了每个 K 的得分:
K = 0, A = [2,3,1,4,0], score 2
K = 1, A = [3,1,4,0,2], score 3
K = 2, A = [1,4,0,2,3], score 3
K = 3, A = [4,0,2,3,1], score 4
K = 4, A = [0,2,3,1,4], score 3
所以我们应当选择 K = 3,得分最高。
Leetcode-cn.com 2022-03-11
🟡 2049.count-nodes-with-the-highest-score
🏷️ Tags
#tree #depth_first_search #array #binary_tree
Description
给你一棵根节点为
一个子树的 大小 为这个子树内节点的数目。每个节点都有一个与之关联的 分数 。求出某个节点分数的方法是,将这个节点和与它相连的边全部 删除 ,剩余部分是若干个 非空 子树,这个节点的 分数 为所有这些子树 大小的乘积 。
请你返回有 最高得分 节点的 数目 。
Example
🟡 2049.count-nodes-with-the-highest-score
🏷️ Tags
#tree #depth_first_search #array #binary_tree
Description
给你一棵根节点为
0 的 二叉树 ,它总共有 n 个节点,节点编号为 0 到 n - 1 。同时给你一个下标从 0 开始的整数数组 parents 表示这棵树,其中 parents[i] 是节点 i 的父节点。由于节点 0 是根,所以 parents[0] == -1 。一个子树的 大小 为这个子树内节点的数目。每个节点都有一个与之关联的 分数 。求出某个节点分数的方法是,将这个节点和与它相连的边全部 删除 ,剩余部分是若干个 非空 子树,这个节点的 分数 为所有这些子树 大小的乘积 。
请你返回有 最高得分 节点的 数目 。
Example
输入:parents = [-1,2,0,2,0]
输出:3
解释:
- 节点 0 的分数为:3 * 1 = 3
- 节点 1 的分数为:4 = 4
- 节点 2 的分数为:1 * 1 * 2 = 2
- 节点 3 的分数为:4 = 4
- 节点 4 的分数为:4 = 4
最高得分为 4 ,有三个节点得分为 4 (分别是节点 1,3 和 4 )。
Leetcode-cn.com 2022-03-13
🟡 393.utf-8-validation
🏷️ Tags
#bit_manipulation #array
Description
给定一个表示数据的整数数组
UTF-8 中的一个字符可能的长度为 1 到 4 字节,遵循以下的规则:
对于 1 字节 的字符,字节的第一位设为 0 ,后面 7 位为这个符号的 unicode 码。
对于 n 字节 的字符 (n > 1),第一个字节的前 n 位都设为1,第 n+1 位设为 0 ,后面字节的前两位一律设为 10 。剩下的没有提及的二进制位,全部为这个符号的 unicode 码。
这是 UTF-8 编码的工作方式:
注意:输入是整数数组。只有每个整数的 最低 8 个有效位 用来存储数据。这意味着每个整数只表示 1 字节的数据。
Example
🟡 393.utf-8-validation
🏷️ Tags
#bit_manipulation #array
Description
给定一个表示数据的整数数组
data ,返回它是否为有效的 UTF-8 编码。UTF-8 中的一个字符可能的长度为 1 到 4 字节,遵循以下的规则:
对于 1 字节 的字符,字节的第一位设为 0 ,后面 7 位为这个符号的 unicode 码。
对于 n 字节 的字符 (n > 1),第一个字节的前 n 位都设为1,第 n+1 位设为 0 ,后面字节的前两位一律设为 10 。剩下的没有提及的二进制位,全部为这个符号的 unicode 码。
这是 UTF-8 编码的工作方式:
Char. number range | UTF-8 octet sequence
(hexadecimal) | (binary)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
注意:输入是整数数组。只有每个整数的 最低 8 个有效位 用来存储数据。这意味着每个整数只表示 1 字节的数据。
Example
输入:data = [197,130,1]
输出:true
解释:数据表示字节序列:11000101 10000010 00000001。
这是有效的 utf-8 编码,为一个 2 字节字符,跟着一个 1 字节字符。
Leetcode-cn.com 2022-03-14
🟢 599.minimum-index-sum-of-two-lists
🏷️ Tags
#array #hash_table #string
Description
假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。
你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。
Example
🟢 599.minimum-index-sum-of-two-lists
🏷️ Tags
#array #hash_table #string
Description
假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。
你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。
Example
输入: list1 = ["Shogun", "Tapioca Express", "Burger King", "KFC"],list2 = ["Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"]
输出: ["Shogun"]
解释: 他们唯一共同喜爱的餐厅是“Shogun”。
Leetcode-cn.com 2022-03-15
🟡 2044.count-number-of-maximum-bitwise-or-subsets
🏷️ Tags
#bit_manipulation #array #backtracking
Description
给你一个整数数组
如果数组
对数组
Example
🟡 2044.count-number-of-maximum-bitwise-or-subsets
🏷️ Tags
#bit_manipulation #array #backtracking
Description
给你一个整数数组
nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。如果数组
a 可以由数组 b 删除一些元素(或不删除)得到,则认为数组 a 是数组 b 的一个 子集 。如果选中的元素下标位置不一样,则认为两个子集 不同 。对数组
a 执行 按位或 ,结果等于 a[0] OR a[1] OR ... OR a[a.length - 1](下标从 0 开始)。Example
输入:nums = [3,1]
输出:2
解释:子集按位或能得到的最大值是 3 。有 2 个子集按位或可以得到 3 :
- [3]
- [3,1]