Leetcode-cn.com 2021-10-04
🟢 482.license-key-formatting
🏷️ Tags
#string
Description
有一个密钥字符串 S ,只包含字母,数字以及 '-'(破折号)。其中, N 个 '-' 将字符串分成了 N+1 组。
给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符。特别地,第一个分组包含的字符个数必须小于等于 K,但至少要包含 1 个字符。两个分组之间需要用 '-'(破折号)隔开,并且将所有的小写字母转换为大写字母。
给定非空字符串 S 和数字 K,按照上面描述的规则进行格式化。
Example
🟢 482.license-key-formatting
🏷️ Tags
#string
Description
有一个密钥字符串 S ,只包含字母,数字以及 '-'(破折号)。其中, N 个 '-' 将字符串分成了 N+1 组。
给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符。特别地,第一个分组包含的字符个数必须小于等于 K,但至少要包含 1 个字符。两个分组之间需要用 '-'(破折号)隔开,并且将所有的小写字母转换为大写字母。
给定非空字符串 S 和数字 K,按照上面描述的规则进行格式化。
Example
输入:S = "5F3Z-2e-9-w", K = 4
输出:"5F3Z-2E9W"
解释:字符串 S 被分成了两个部分,每部分 4 个字符;
注意,两个额外的破折号需要删掉。
Leetcode-cn.com 2021-10-06
🟢 414.third-maximum-number
🏷️ Tags
#array #sorting
Description
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
Example
🟢 414.third-maximum-number
🏷️ Tags
#array #sorting
Description
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
Example
输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。
Leetcode-cn.com 2021-10-07
🟢 434.number-of-segments-in-a-string
🏷️ Tags
#string
Description
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
Example
🟢 434.number-of-segments-in-a-string
🏷️ Tags
#string
Description
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
Example
输入: "Hello, my name is John"
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。
Leetcode-cn.com 2021-10-08
🟡 187.repeated-dna-sequences
🏷️ Tags
#bit_manipulation #hash_table #string #sliding_window #hash_function #rolling_hash
Description
所有 DNA 都由一系列缩写为
编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串
Example
🟡 187.repeated-dna-sequences
🏷️ Tags
#bit_manipulation #hash_table #string #sliding_window #hash_function #rolling_hash
Description
所有 DNA 都由一系列缩写为
'A','C','G' 和 'T' 的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串
s 中出现次数超过一次。Example
输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出:["AAAAACCCCC","CCCCCAAAAA"]
Leetcode-cn.com 2021-10-10
🟢 441.arranging-coins
🏷️ Tags
#math #binary_search
Description
你总共有
给你一个数字
Example
🟢 441.arranging-coins
🏷️ Tags
#math #binary_search
Description
你总共有
n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字
n ,计算并返回可形成 完整阶梯行 的总行数。Example
输入:n = 5
输出:2
解释:因为第三行不完整,所以返回 2 。
Leetcode-cn.com 2021-10-11
🔴 273.integer-to-english-words
🏷️ Tags
#recursion #math #string
Description
将非负整数
Example
🔴 273.integer-to-english-words
🏷️ Tags
#recursion #math #string
Description
将非负整数
num 转换为其对应的英文表示。Example
输入:num = 123
输出:"One Hundred Twenty Three"
Leetcode-cn.com 2021-10-12
🟡 29.divide-two-integers
🏷️ Tags
#bit_manipulation #math
Description
给定两个整数,被除数
返回被除数
整数除法的结果应当截去(
Example
🟡 29.divide-two-integers
🏷️ Tags
#bit_manipulation #math
Description
给定两个整数,被除数
dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数
dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(
truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2Example
输入: dividend = 10, divisor = 3
输出: 3
解释: 10/3 = truncate(3.33333..) = truncate(3) = 3
Leetcode-cn.com 2021-10-13
🟢 412.fizz-buzz
🏷️ Tags
#math #string #simulation
Description
写一个程序,输出从 1 到 n 数字的字符串表示。
1. 如果 n 是3的倍数,输出“Fizz”;
2. 如果 n 是5的倍数,输出“Buzz”;
3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
undefined
🟢 412.fizz-buzz
🏷️ Tags
#math #string #simulation
Description
写一个程序,输出从 1 到 n 数字的字符串表示。
1. 如果 n 是3的倍数,输出“Fizz”;
2. 如果 n 是5的倍数,输出“Buzz”;
3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
undefined
Leetcode-cn.com 2021-10-14
🟢 剑指 Offer II 069.B1IidL
🏷️ Tags
#array #binary_search
Description
符合下列属性的数组
存在
给定由整数组成的山峰数组
Example
🟢 剑指 Offer II 069.B1IidL
🏷️ Tags
#array #binary_search
Description
符合下列属性的数组
arr 称为 山峰数组(山脉数组) :arr.length >= 3存在
i(0 < i < arr.length - 1)使得:arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i+1] > ... > arr[arr.length - 1]给定由整数组成的山峰数组
arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i ,即山峰顶部。Example
输入:arr = [0,1,0]
输出:1
Leetcode-cn.com 2021-10-15
🟡 38.count-and-say
🏷️ Tags
#string
Description
给定一个正整数
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。
你可以将其视作是由递归公式定义的数字字符串序列:
前五项如下:
要 描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。
例如,数字字符串
Example
🟡 38.count-and-say
🏷️ Tags
#string
Description
给定一个正整数
n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。
你可以将其视作是由递归公式定义的数字字符串序列:
countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:
1. 1
2. 11
3. 21
4. 1211
5. 111221
第一项是数字 1
描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11"
描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21"
描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211"
描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221"
要 描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。
例如,数字字符串
"3322251" 的描述如下图:Example
输入:n = 1
输出:"1"
解释:这是一个基本样例。
Leetcode-cn.com 2021-10-16
🔴 282.expression-add-operators
🏷️ Tags
#math #string #backtracking
Description
给定一个仅包含数字
Example
🔴 282.expression-add-operators
🏷️ Tags
#math #string #backtracking
Description
给定一个仅包含数字
0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+、- 或 * ,返回所有能够得到目标值的表达式。Example
输入: num = "123", target = 6
输出: ["1+2+3", "1*2*3"]
Leetcode-cn.com 2021-10-17
🟡 230.kth-smallest-element-in-a-bst
🏷️ Tags
#tree #depth_first_search #binary_search_tree #binary_tree
Description
给定一个二叉搜索树的根节点
Example
🟡 230.kth-smallest-element-in-a-bst
🏷️ Tags
#tree #depth_first_search #binary_search_tree #binary_tree
Description
给定一个二叉搜索树的根节点
root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。Example
输入:root = [3,1,4,null,2], k = 1
输出:1
Leetcode-cn.com 2021-10-18
🟢 476.number-complement
🏷️ Tags
#bit_manipulation
Description
给你一个 正 整数
Example
🟢 476.number-complement
🏷️ Tags
#bit_manipulation
Description
给你一个 正 整数
num ,输出它的补数。补数是对该数的二进制表示取反。Example
输入:num = 5
输出:2
解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。
Leetcode-cn.com 2021-10-19
🟡 211.design-add-and-search-words-data-structure
🏷️ Tags
#depth_first_search #design #trie #string
Description
请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。
实现词典类
Example
🟡 211.design-add-and-search-words-data-structure
🏷️ Tags
#depth_first_search #design #trie #string
Description
请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。
实现词典类
WordDictionary :WordDictionary() 初始化词典对象void addWord(word) 将 word 添加到数据结构中,之后可以对它进行匹配bool search(word) 如果数据结构中存在字符串与 word 匹配,则返回 true ;否则,返回 false 。word 中可能包含一些 '.' ,每个 . 都可以表示任何一个字母。Example
输入:
["WordDictionary","addWord","addWord","addWord","search","search","search","search"]
[[],["bad"],["dad"],["mad"],["pad"],["bad"],[".ad"],["b.."]]
输出:
[null,null,null,null,false,true,true,true]
解释:
WordDictionary wordDictionary = new WordDictionary();
wordDictionary.addWord("bad");
wordDictionary.addWord("dad");
wordDictionary.addWord("mad");
wordDictionary.search("pad"); // return False
wordDictionary.search("bad"); // return True
wordDictionary.search(".ad"); // return True
wordDictionary.search("b.."); // return True
Leetcode-cn.com 2021-10-20
🟢 453.minimum-moves-to-equal-array-elements
🏷️ Tags
#array #math
Description
给你一个长度为
Example
🟢 453.minimum-moves-to-equal-array-elements
🏷️ Tags
#array #math
Description
给你一个长度为
n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。Example
输入:nums = [1,2,3]
输出:3
解释:
只需要3次操作(注意每次操作会增加两个元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
Leetcode-cn.com 2021-10-21
🟢 66.plus-one
🏷️ Tags
#array #math
Description
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
Example
🟢 66.plus-one
🏷️ Tags
#array #math
Description
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
Example
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
Leetcode-cn.com 2021-10-22
🟡 229.majority-element-ii
🏷️ Tags
#array #hash_table #counting #sorting
Description
给定一个大小为 n 的整数数组,找出其中所有出现超过
Example
🟡 229.majority-element-ii
🏷️ Tags
#array #hash_table #counting #sorting
Description
给定一个大小为 n 的整数数组,找出其中所有出现超过
⌊ n/3 ⌋ 次的元素。Example
输入:[3,2,3]
输出:[3]
Leetcode-cn.com 2021-10-23
🟢 492.construct-the-rectangle
🏷️ Tags
#math
Description
作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求:
你需要按顺序输出你设计的页面的长度 L 和宽度 W。
Example
🟢 492.construct-the-rectangle
🏷️ Tags
#math
Description
作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求:
1. 你设计的矩形页面必须等于给定的目标面积。
2. 宽度 W 不应大于长度 L,换言之,要求 L >= W 。
3. 长度 L 和宽度 W 之间的差距应当尽可能小。
你需要按顺序输出你设计的页面的长度 L 和宽度 W。
Example
输入: 4
输出: [2, 2]
解释: 目标面积是 4, 所有可能的构造方案有 [1,4], [2,2], [4,1]。
但是根据要求2,[1,4] 不符合要求; 根据要求3,[2,2] 比 [4,1] 更能符合要求. 所以输出长度 L 为 2, 宽度 W 为 2。
Leetcode-cn.com 2021-10-24
🟡 638.shopping-offers
🏷️ Tags
#bit_manipulation #memoization #array #dynamic_programming #backtracking #bitmask
Description
在 LeetCode 商店中, 有
给你一个整数数组
还有一个数组
返回 确切 满足购物清单所需花费的最低价格,你可以充分利用大礼包的优惠活动。你不能购买超出购物清单指定数量的物品,即使那样会降低整体价格。任意大礼包可无限次购买。
Example
🟡 638.shopping-offers
🏷️ Tags
#bit_manipulation #memoization #array #dynamic_programming #backtracking #bitmask
Description
在 LeetCode 商店中, 有
n 件在售的物品。每件物品都有对应的价格。然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品。给你一个整数数组
price 表示物品价格,其中 price[i] 是第 i 件物品的价格。另有一个整数数组 needs 表示购物清单,其中 needs[i] 是需要购买第 i 件物品的数量。还有一个数组
special 表示大礼包,special[i] 的长度为 n + 1 ,其中 special[i][j] 表示第 i 个大礼包中内含第 j 件物品的数量,且 special[i][n] (也就是数组中的最后一个整数)为第 i 个大礼包的价格。返回 确切 满足购物清单所需花费的最低价格,你可以充分利用大礼包的优惠活动。你不能购买超出购物清单指定数量的物品,即使那样会降低整体价格。任意大礼包可无限次购买。
Example
输入:price = [2,5], special = [[3,0,5],[1,2,10]], needs = [3,2]
输出:14
解释:有 A 和 B 两种物品,价格分别为 ¥2 和 ¥5 。
大礼包 1 ,你可以以 ¥5 的价格购买 3A 和 0B 。
大礼包 2 ,你可以以 ¥10 的价格购买 1A 和 2B 。
需要购买 3 个 A 和 2 个 B , 所以付 ¥10 购买 1A 和 2B(大礼包 2),以及 ¥4 购买 2A 。
Leetcode-cn.com 2021-10-25
🟡 240.search-a-2d-matrix-ii
🏷️ Tags
#array #binary_search #divide_and_conquer #matrix
Description
编写一个高效的算法来搜索
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
Example
🟡 240.search-a-2d-matrix-ii
🏷️ Tags
#array #binary_search #divide_and_conquer #matrix
Description
编写一个高效的算法来搜索
m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
Example
输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true