Leetcode-cn.com 2022-04-01
🟡 954.array-of-doubled-pairs
🏷️ Tags
#greedy #array #hash_table #sorting
Description
给定一个长度为偶数的整数数组
Example
🟡 954.array-of-doubled-pairs
🏷️ Tags
#greedy #array #hash_table #sorting
Description
给定一个长度为偶数的整数数组
arr,只有对 arr 进行重组后可以满足 “对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 * arr[2 * i]” 时,返回 true;否则,返回 false。Example
输入:arr = [3,1,3,6]
输出:false
Leetcode-cn.com 2022-04-02
🔴 420.strong-password-checker
🏷️ Tags
#greedy #string #heap_priority_queue
Description
Example
🔴 420.strong-password-checker
🏷️ Tags
#greedy #string #heap_priority_queue
Description
Example
输入:password = "a"
输出:5
Leetcode-cn.com 2022-04-03
🟢 744.find-smallest-letter-greater-than-target
🏷️ Tags
#array #binary_search
Description
给你一个排序后的字符列表
在比较时,字母是依序循环出现的。举个例子:
如果目标字母
Example
🟢 744.find-smallest-letter-greater-than-target
🏷️ Tags
#array #binary_search
Description
给你一个排序后的字符列表
letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循环出现的。举个例子:
如果目标字母
target = 'z' 并且字符列表为 letters = ['a', 'b'],则答案返回 'a'Example
输入: letters = ["c", "f", "j"],target = "a"
输出: "c"
Leetcode-cn.com 2022-04-04
🟡 307.range-sum-query-mutable
🏷️ Tags
#design #binary_indexed_tree #segment_tree #array
Description
给你一个数组
其中一类查询要求 更新 数组
另一类查询要求返回数组
实现
Example
🟡 307.range-sum-query-mutable
🏷️ Tags
#design #binary_indexed_tree #segment_tree #array
Description
给你一个数组
nums ,请你完成两类查询。其中一类查询要求 更新 数组
nums 下标对应的值另一类查询要求返回数组
nums 中索引 left 和索引 right 之间( 包含 )的nums元素的 和 ,其中 left <= right实现
NumArray 类:NumArray(int[] nums) 用整数数组 nums 初始化对象void update(int index, int val) 将 nums[index] 的值 更新 为 valint sumRange(int left, int right) 返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nums元素的 和 (即,nums[left] + nums[left + 1], ..., nums[right])Example
输入:
["NumArray", "sumRange", "update", "sumRange"]
[[[1, 3, 5]], [0, 2], [1, 2], [0, 2]]
输出:
[null, 9, null, 8]
解释:
NumArray numArray = new NumArray([1, 3, 5]);
numArray.sumRange(0, 2); // 返回 1 + 3 + 5 = 9
numArray.update(1, 2); // nums = [1,2,5]
numArray.sumRange(0, 2); // 返回 1 + 2 + 5 = 8
Leetcode-cn.com 2022-04-05
🟢 762.prime-number-of-set-bits-in-binary-representation
🏷️ Tags
#bit_manipulation #math
Description
给你两个整数
计算置位位数 就是二进制表示中
例如,
Example
🟢 762.prime-number-of-set-bits-in-binary-representation
🏷️ Tags
#bit_manipulation #math
Description
给你两个整数
left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。计算置位位数 就是二进制表示中
1 的个数。例如,
21 的二进制表示 10101 有 3 个计算置位。Example
输入:left = 6, right = 10
输出:4
解释:
6 -> 110 (2 个计算置位,2 是质数)
7 -> 111 (3 个计算置位,3 是质数)
9 -> 1001 (2 个计算置位,2 是质数)
10-> 1010 (2 个计算置位,2 是质数)
共计 4 个计算置位为质数的数字。
Leetcode-cn.com 2022-04-06
🟡 310.minimum-height-trees
🏷️ Tags
#depth_first_search #breadth_first_search #graph #topological_sort
Description
树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。
给你一棵包含
可选择树中任何一个节点作为根。当选择节点
请你找到所有的 最小高度树 并按 任意顺序 返回它们的根节点标签列表。
树的 高度 是指根节点和叶子节点之间最长向下路径上边的数量。
Example
🟡 310.minimum-height-trees
🏷️ Tags
#depth_first_search #breadth_first_search #graph #topological_sort
Description
树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。
给你一棵包含
n 个节点的树,标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表(每一个边都是一对标签),其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条无向边。可选择树中任何一个节点作为根。当选择节点
x 作为根节点时,设结果树的高度为 h 。在所有可能的树中,具有最小高度的树(即,min(h))被称为 最小高度树 。请你找到所有的 最小高度树 并按 任意顺序 返回它们的根节点标签列表。
树的 高度 是指根节点和叶子节点之间最长向下路径上边的数量。
Example
输入:n = 4, edges = [[1,0],[1,2],[1,3]]
输出:[1]
解释:如图所示,当根是标签为 1 的节点时,树的高度是 1 ,这是唯一的最小高度树。
Leetcode-cn.com 2022-04-07
🟢 796.rotate-string
🏷️ Tags
#string #string_matching
Description
给定两个字符串,
例如, 若
Example
🟢 796.rotate-string
🏷️ Tags
#string #string_matching
Description
给定两个字符串,
s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。s 的 旋转操作 就是将 s 最左边的字符移动到最右边。 例如, 若
s = 'abcde',在旋转一次之后结果就是'bcdea' 。Example
输入: s = "abcde", goal = "cdeab"
输出: true
Leetcode-cn.com 2022-04-08
🟡 429.n-ary-tree-level-order-traversal
🏷️ Tags
#tree #breadth_first_search
Description
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见Example
🟡 429.n-ary-tree-level-order-traversal
🏷️ Tags
#tree #breadth_first_search
Description
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见Example
输入:root = [1,null,3,2,4,null,5,6]
输出:[[1],[3,2,4],[5,6]]
Leetcode-cn.com 2022-04-09
🔴 780.reaching-points
🏷️ Tags
#math
Description
给定四个整数
从点
Example
🔴 780.reaching-points
🏷️ Tags
#math
Description
给定四个整数
sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。从点
(x, y) 可以转换到 (x, x+y) 或者 (x+y, y)。Example
输入: sx = 1, sy = 1, tx = 3, ty = 5
输出: true
解释:
可以通过以下一系列转换从起点转换到终点:
(1, 1) -> (1, 2)
(1, 2) -> (3, 2)
(3, 2) -> (3, 5)
Leetcode-cn.com 2022-04-10
🟢 804.unique-morse-code-words
🏷️ Tags
#array #hash_table #string
Description
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
为了方便,所有
给你一个字符串数组
例如,
对
Example
🟢 804.unique-morse-code-words
🏷️ Tags
#array #hash_table #string
Description
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
'a' 对应 ".-" ,'b' 对应 "-..." ,'c' 对应 "-.-." ,以此类推。为了方便,所有
26 个英文字母的摩尔斯密码表如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
给你一个字符串数组
words ,每个单词可以写成每个字母对应摩尔斯密码的组合。例如,
"cab" 可以写成 "-.-..--..." ,(即 "-.-." + ".-" + "-..." 字符串的结合)。我们将这样一个连接过程称作 单词翻译 。对
words 中所有单词进行单词翻译,返回不同 单词翻译 的数量。Example
输入: words = ["gin", "zen", "gig", "msg"]
输出: 2
解释:
各单词翻译如下:
"gin" -> "--...-."
"zen" -> "--...-."
"gig" -> "--...--."
"msg" -> "--...--."
共有 2 种不同翻译, "--...-." 和 "--...--.".
Leetcode-cn.com 2022-04-14
🟢 1672.richest-customer-wealth
🏷️ Tags
#array #matrix
Description
给你一个
客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。
Example
🟢 1672.richest-customer-wealth
🏷️ Tags
#array #matrix
Description
给你一个
m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。
Example
输入:accounts = [[1,2,3],[3,2,1]]
输出:6
解释:
第 1 位客户的资产总量 = 1 + 2 + 3 = 6
第 2 位客户的资产总量 = 3 + 2 + 1 = 6
两位客户都是最富有的,资产总量都是 6 ,所以返回 6 。
Leetcode-cn.com 2022-04-15
🟡 385.mini-parser
🏷️ Tags
#stack #depth_first_search #string
Description
给定一个字符串 s 表示一个整数嵌套列表,实现一个解析它的语法分析器并返回解析的结果
列表中的每个元素只可能是整数或整数嵌套列表
Example
🟡 385.mini-parser
🏷️ Tags
#stack #depth_first_search #string
Description
给定一个字符串 s 表示一个整数嵌套列表,实现一个解析它的语法分析器并返回解析的结果
NestedInteger 。列表中的每个元素只可能是整数或整数嵌套列表
Example
输入:s = "324",
输出:324
解释:你应该返回一个 NestedInteger 对象,其中只包含整数值 324。
Leetcode-cn.com 2022-04-16
🔴 479.largest-palindrome-product
🏷️ Tags
#math
Description
给定一个整数 n ,返回 可表示为两个
Example
🔴 479.largest-palindrome-product
🏷️ Tags
#math
Description
给定一个整数 n ,返回 可表示为两个
n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。Example
输入: n = 1
输出: 9
Leetcode-cn.com 2022-04-17
🟢 819.most-common-word
🏷️ Tags
#hash_table #string #counting
Description
给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。
题目保证至少有一个词不在禁用列表中,而且答案唯一。
禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。
Example
🟢 819.most-common-word
🏷️ Tags
#hash_table #string #counting
Description
给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。
题目保证至少有一个词不在禁用列表中,而且答案唯一。
禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。
Example
输入:
paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."
banned = ["hit"]
输出: "ball"
解释:
"hit" 出现了3次,但它是一个禁用的单词。
"ball" 出现了2次 (同时没有其他单词出现2次),所以它是段落里出现次数最多的,且不在禁用列表中的单词。
注意,所有这些单词在段落里不区分大小写,标点符号需要忽略(即使是紧挨着单词也忽略, 比如 "ball,"),
"hit"不是最终的答案,虽然它出现次数更多,但它在禁用单词列表中。
Leetcode-cn.com 2022-04-18
🟡 386.lexicographical-numbers
🏷️ Tags
#depth_first_search #trie
Description
给你一个整数
你必须设计一个时间复杂度为
Example
🟡 386.lexicographical-numbers
🏷️ Tags
#depth_first_search #trie
Description
给你一个整数
n ,按字典序返回范围 [1, n] 内所有整数。你必须设计一个时间复杂度为
O(n) 且使用 O(1) 额外空间的算法。Example
输入:n = 13
输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]
Leetcode-cn.com 2022-04-19
🟢 821.shortest-distance-to-a-character
🏷️ Tags
#array #two_pointers #string
Description
给你一个字符串
返回一个整数数组
两个下标
Example
🟢 821.shortest-distance-to-a-character
🏷️ Tags
#array #two_pointers #string
Description
给你一个字符串
s 和一个字符 c ,且 c 是 s 中出现过的字符。返回一个整数数组
answer ,其中 answer.length == s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。两个下标
i 和 j 之间的 距离 为 abs(i - j) ,其中 abs 是绝对值函数。Example
输入:s = "loveleetcode", c = "e"
输出:[3,2,1,0,1,0,0,1,2,2,1,0]
解释:字符 'e' 出现在下标 3、5、6 和 11 处(下标从 0 开始计数)。
距下标 0 最近的 'e' 出现在下标 3 ,所以距离为 abs(0 - 3) = 3 。
距下标 1 最近的 'e' 出现在下标 3 ,所以距离为 abs(1 - 3) = 2 。
对于下标 4 ,出现在下标 3 和下标 5 处的 'e' 都离它最近,但距离是一样的 abs(4 - 3) == abs(4 - 5) = 1 。
距下标 8 最近的 'e' 出现在下标 6 ,所以距离为 abs(8 - 6) = 2 。
Leetcode-cn.com 2022-04-20
🟡 388.longest-absolute-file-path
🏷️ Tags
#stack #depth_first_search #string
Description
假设有一个同时存储文件和目录的文件系统。下图展示了文件系统的一个Example
🟡 388.longest-absolute-file-path
🏷️ Tags
#stack #depth_first_search #string
Description
假设有一个同时存储文件和目录的文件系统。下图展示了文件系统的一个Example
输入:input = "dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext"
输出:20
解释:只有一个文件,绝对路径为 "dir/subdir2/file.ext" ,路径长度 20
Leetcode-cn.com 2022-04-21
🟢 824.goat-latin
🏷️ Tags
#string
Description
给你一个由若干单词组成的句子
请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:
如果单词以元音开头(
例如,单词
如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加
例如,单词
根据单词在句子中的索引,在单词最后添加与索引相同数量的字母
例如,在第一个单词后添加
返回将
Example
🟢 824.goat-latin
🏷️ Tags
#string
Description
给你一个由若干单词组成的句子
sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:
如果单词以元音开头(
'a', 'e', 'i', 'o', 'u'),在单词后添加"ma"。例如,单词
"apple" 变为 "applema" 。如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加
"ma"。例如,单词
"goat" 变为 "oatgma" 。根据单词在句子中的索引,在单词最后添加与索引相同数量的字母
'a',索引从 1 开始。例如,在第一个单词后添加
"a" ,在第二个单词后添加 "aa" ,以此类推。返回将
sentence 转换为山羊拉丁文后的句子。Example
输入:sentence = "I speak Goat Latin"
输出:"Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
Leetcode-cn.com 2022-04-22
🟡 396.rotate-function
🏷️ Tags
#array #math #dynamic_programming
Description
给定一个长度为
假设
返回
生成的测试用例让答案符合 32 位 整数。
Example
🟡 396.rotate-function
🏷️ Tags
#array #math #dynamic_programming
Description
给定一个长度为
n 的整数数组 nums 。假设
arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为:F(k) = 0 * arrk[0] + 1 * arrk[1] + ... + (n - 1) * arrk[n - 1]返回
F(0), F(1), ..., F(n-1)中的最大值 。生成的测试用例让答案符合 32 位 整数。
Example
输入: nums = [4,3,2,6]
输出: 26
解释:
F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4 + 18 = 25
F(1) = (0 * 6) + (1 * 4) + (2 * 3) + (3 * 2) = 0 + 4 + 6 + 6 = 16
F(2) = (0 * 2) + (1 * 6) + (2 * 4) + (3 * 3) = 0 + 6 + 8 + 9 = 23
F(3) = (0 * 3) + (1 * 2) + (2 * 6) + (3 * 4) = 0 + 2 + 12 + 12 = 26
所以 F(0), F(1), F(2), F(3) 中的最大值是 F(3) = 26 。
Leetcode-cn.com 2022-04-24
🟢 868.binary-gap
🏷️ Tags
#bit_manipulation #math
Description
给定一个正整数
如果只有
Example
🟢 868.binary-gap
🏷️ Tags
#bit_manipulation #math
Description
给定一个正整数
n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1,返回 0 。如果只有
0 将两个 1 分隔开(可能不存在 0 ),则认为这两个 1 彼此 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如,"1001" 中的两个 1 的距离为 3 。Example
输入:n = 22
输出:2
解释:22 的二进制是 "10110" 。
在 22 的二进制表示中,有三个 1,组成两对相邻的 1 。
第一对相邻的 1 中,两个 1 之间的距离为 2 。
第二对相邻的 1 中,两个 1 之间的距离为 1 。
答案取两个距离之中最大的,也就是 2 。
Leetcode-cn.com 2022-04-27
🟡 417.pacific-atlantic-water-flow
🏷️ Tags
#depth_first_search #breadth_first_search #array #matrix
Description
有一个
这个岛被分割成一个由若干方形单元格组成的网格。给定一个
岛上雨水较多,如果相邻单元格的高度 小于或等于 当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流入海洋。
返回 网格坐标
Example
🟡 417.pacific-atlantic-water-flow
🏷️ Tags
#depth_first_search #breadth_first_search #array #matrix
Description
有一个
m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。这个岛被分割成一个由若干方形单元格组成的网格。给定一个
m x n 的整数矩阵 heights , heights[r][c] 表示坐标 (r, c) 上单元格 高于海平面的高度 。岛上雨水较多,如果相邻单元格的高度 小于或等于 当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流入海洋。
返回 网格坐标
result 的 2D列表 ,其中 result[i] = [ri, ci] 表示雨水可以从单元格 (ri, ci) 流向 太平洋和大西洋 。Example
输入: heights = [[1,2,2,3,5],[3,2,3,4,4],[2,4,5,3,1],[6,7,1,4,5],[5,1,1,2,4]]
输出: [[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]]