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
Leetcode-cn.com 2021-10-26
🟢 496.next-greater-element-i
🏷️ Tags
#stack #array #hash_table #monotonic_stack
Description
给你两个 没有重复元素 的数组
请你找出
Example
🟢 496.next-greater-element-i
🏷️ Tags
#stack #array #hash_table #monotonic_stack
Description
给你两个 没有重复元素 的数组
nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出
nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。Example
输入: nums1 = [4,1,2], nums2 = [1,3,4,2].
输出: [-1,3,-1]
解释:
对于 num1 中的数字 4 ,你无法在第二个数组中找到下一个更大的数字,因此输出 -1 。
对于 num1 中的数字 1 ,第二个数组中数字1右边的下一个较大数字是 3 。
对于 num1 中的数字 2 ,第二个数组中没有下一个更大的数字,因此输出 -1 。
Leetcode-cn.com 2021-10-27
🔴 301.remove-invalid-parentheses
🏷️ Tags
#breadth_first_search #string #backtracking
Description
给你一个由若干括号和字母组成的字符串
返回所有可能的结果。答案可以按 任意顺序 返回。
Example
🔴 301.remove-invalid-parentheses
🏷️ Tags
#breadth_first_search #string #backtracking
Description
给你一个由若干括号和字母组成的字符串
s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。
Example
输入:s = "()())()"
输出:["(())()","()()()"]
Leetcode-cn.com 2021-10-28
🟡 869.reordered-power-of-2
🏷️ Tags
#math #counting #enumeration #sorting
Description
给定正整数
如果我们可以通过上述方式得到 2 的幂,返回
Example
🟡 869.reordered-power-of-2
🏷️ Tags
#math #counting #enumeration #sorting
Description
给定正整数
N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。如果我们可以通过上述方式得到 2 的幂,返回
true;否则,返回 false。Example
输入:1
输出:true
Leetcode-cn.com 2021-10-29
🔴 335.self-crossing
🏷️ Tags
#geometry #array #math
Description
给你一个整数数组
从 X-Y 平面上的点
判断你所经过的路径是否相交。如果相交,返回
Example
🔴 335.self-crossing
🏷️ Tags
#geometry #array #math
Description
给你一个整数数组
distance 。从 X-Y 平面上的点
(0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。判断你所经过的路径是否相交。如果相交,返回
true ;否则,返回 false 。Example
输入:distance = [2,1,1,2]
输出:true
Leetcode-cn.com 2021-10-30
🟡 260.single-number-iii
🏷️ Tags
#bit_manipulation #array
Description
给定一个整数数组
进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?
Example
🟡 260.single-number-iii
🏷️ Tags
#bit_manipulation #array
Description
给定一个整数数组
nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?
Example
输入:nums = [1,2,1,3,2,5]
输出:[3,5]
解释:[5, 3] 也是有效的答案。
Leetcode-cn.com 2021-10-31
🟢 500.keyboard-row
🏷️ Tags
#array #hash_table #string
Description
给你一个字符串数组
美式键盘 中:
第一行由字符
第二行由字符
第三行由字符
Example
🟢 500.keyboard-row
🏷️ Tags
#array #hash_table #string
Description
给你一个字符串数组
words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。美式键盘 中:
第一行由字符
"qwertyuiop" 组成。第二行由字符
"asdfghjkl" 组成。第三行由字符
"zxcvbnm" 组成。Example
输入:words = ["Hello","Alaska","Dad","Peace"]
输出:["Alaska","Dad"]
Leetcode-cn.com 2021-11-01
🟢 575.distribute-candies
🏷️ Tags
#array #hash_table
Description
给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。
Example
🟢 575.distribute-candies
🏷️ Tags
#array #hash_table
Description
给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。
Example
输入: candies = [1,1,2,2,3,3]
输出: 3
解析: 一共有三种种类的糖果,每一种都有两个。
最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数最多。