2022年12月刷题记录
2022年12月1日
leetcode1779. 找到最近的有相同 X 或 Y 坐标的点
链接地址:https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/
题意:
给你两个整数
x和y,表示你在一个笛卡尔坐标系下的(x, y)处。同时,在同一个坐标系下给你一个数组points,其中points[i] = [ai, bi]表示在(ai, bi)处有一个点。当一个点与你所在的位置有相同的x坐标或者相同的y坐标时,我们称这个点是 有效的 。请返回距离你当前位置 曼哈顿距离 最近的 有效 点的下标(下标从 0 开始)。如果有多个最近的有效点,请返回下标 最小 的一个。如果没有有效点,请返回
-1。两个点
(x1, y1)和(x2, y2)之间的 曼哈顿距离 为abs(x1 - x2) + abs(y1 - y2)。
2022年12月2日
leetcode1769. 移动所有球到每个盒子所需的最小操作数
链接地址:https://leetcode.cn/problems/minimum-number-of-operations-to-move-all-balls-to-each-box/
题意:
有
n个盒子。给你一个长度为n的二进制字符串boxes,其中boxes[i]的值为'0'表示第i个盒子是 空 的,而boxes[i]的值为'1'表示盒子里有 一个 小球。在一步操作中,你可以将 一个 小球从某个盒子移动到一个与之相邻的盒子中。第
i个盒子和第j个盒子相邻需满足abs(i - j) == 1。注意,操作执行后,某些盒子中可能会存在不止一个小球。返回一个长度为
n的数组answer,其中answer[i]是将所有小球移动到第i个盒子所需的 最小 操作数。每个
answer[i]都需要根据盒子的 初始状态 进行计算。
2022年12月3日
leetcode1796. 字符串中第二大的数字
链接地址:https://leetcode.cn/problems/second-largest-digit-in-a-string/
题意:
给你一个混合字符串
s,请你返回s中 第二大 的数字,如果不存在第二大的数字,请你返回-1。混合字符串 由小写英文字母和数字组成。
2022年12月4日
leetcode1774. 最接近目标价格的甜点成本
链接地址:https://leetcode.cn/problems/closest-dessert-cost/
题意:
你打算做甜点,现在需要购买配料。目前共有
n种冰激凌基料和m种配料可供选购。而制作甜点需要遵循以下几条规则:
- 必须选择 一种 冰激凌基料。
- 可以添加 一种或多种 配料,也可以不添加任何配料。
- 每种类型的配料 最多两份 。
给你以下三个输入:
baseCosts,一个长度为n的整数数组,其中每个baseCosts[i]表示第i种冰激凌基料的价格。toppingCosts,一个长度为m的整数数组,其中每个toppingCosts[i]表示 一份 第i种冰激凌配料的价格。target,一个整数,表示你制作甜点的目标价格。你希望自己做的甜点总成本尽可能接近目标价格
target。返回最接近
target的甜点成本。如果有多种方案,返回 成本相对较低 的一种。
2022年12月5日
leetcode11. 盛最多水的容器
链接地址:https://leetcode.cn/problems/container-with-most-water/
题意:
给定一个长度为
n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线,使得它们与
x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。
说明:你不能倾斜容器。
2022年12月6日
leetcode1805. 字符串中不同整数的数目
链接地址:https://leetcode.cn/problems/number-of-different-integers-in-a-string/
题意:
给你一个字符串
word,该字符串由数字和小写英文字母组成。请你用空格替换每个不是数字的字符。例如,
"a123bc34d8ef34"将会变成" 123 34 8 34"。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123"、"34"、"8"和"34"。返回对
word完成替换后形成的 不同 整数的数目。只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。
2022年12月7日
leetcode1775. 通过最少操作次数使数组的和相等
链接地址:https://leetcode.cn/problems/equal-sum-arrays-with-minimum-number-of-operations/
题意:
给你两个长度可能不等的整数数组
nums1和nums2。两个数组中的所有值都在1到6之间(包含1和6)。每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成
1到6之间 任意 的值(包含1和6)。请你返回使
nums1中所有数的和与nums2中所有数的和相等的最少操作次数。如果无法使两个数组的和相等,请返回-1。
2022年12月8日
leetcode1812. 判断国际象棋棋盘中一个格子的颜色
链接地址:https://leetcode.cn/problems/determine-color-of-a-chessboard-square/
题意:
给你一个坐标
coordinates,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。如果所给格子的颜色是白色,请你返回
true,如果是黑色,请返回false。给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。
2022年12月9日
leetcode1780. 判断一个数字是否可以表示成三的幂的和
链接地址:https://leetcode.cn/problems/check-if-number-is-a-sum-of-powers-of-three/
题意:
给你一个整数
n,如果你可以将n表示成若干个不同的三的幂之和,请你返回true,否则请返回false。对于一个整数
y,如果存在整数x满足y == 3x,我们称这个整数y是三的幂。
2022年12月10日
leetcode1691. 堆叠长方体的最大高度
链接地址:https://leetcode.cn/problems/maximum-height-by-stacking-cuboids/
题意:
给你
n个长方体cuboids,其中第i个长方体的长宽高表示为cuboids[i] = [widthi, lengthi, heighti](下标从 0 开始)。请你从cuboids选出一个 子集 ,并将它们堆叠起来。如果
widthi <= widthj且lengthi <= lengthj且heighti <= heightj,你就可以将长方体i堆叠在长方体j上。你可以通过旋转把长方体的长宽高重新排列,以将它放在另一个长方体上。返回 堆叠长方体
cuboids可以得到的 最大高度 。
解题思路:
2022年12月11日
leetcode1827. 最少操作使数组递增
链接地址:https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/
题意:
给你一个整数数组
nums(下标从 0 开始)。每一次操作中,你可以选择数组中一个元素,并将它增加1。
- 比方说,如果
nums = [1,2,3],你可以选择增加nums[1]得到nums = [1,**3**,3]。请你返回使
nums严格递增 的 最少 操作次数。我们称数组
nums是 严格递增的 ,当它满足对于所有的0 <= i < nums.length - 1都有nums[i] < nums[i+1]。一个长度为1的数组是严格递增的一种特殊情况。
2022年12月12日
leetcode1781. 所有子字符串美丽值之和
链接地址:https://leetcode.cn/problems/sum-of-beauty-of-all-substrings/
题意:
一个字符串的 美丽值 定义为:出现频率最高字符与出现频率最低字符的出现次数之差。
- 比方说,
"abaacc"的美丽值为3 - 1 = 2。给你一个字符串
s,请你返回它所有子字符串的 美丽值 之和。
2022年12月13日
leetcode1832. 判断句子是否为全字母句
链接地址:https://leetcode.cn/problems/check-if-the-sentence-is-pangram/
题意:
全字母句 指包含英语字母表中每个字母至少一次的句子。
给你一个仅由小写英文字母组成的字符串
sentence,请你判断sentence是否为 全字母句 。如果是,返回
true;否则,返回false。
2022年12月14日
leetcode1697. 检查边长度限制的路径是否存在
链接地址:https://leetcode.cn/problems/checking-existence-of-edge-length-limited-paths/
题意:
给你一个
n个点组成的无向图边集edgeList,其中edgeList[i] = [ui, vi, disi]表示点ui和点vi之间有一条长度为disi的边。请注意,两个点之间可能有 超过一条边 。给你一个查询数组
queries,其中queries[j] = [pj, qj, limitj],你的任务是对于每个查询queries[j],判断是否存在从pj到qj的路径,且这条路径上的每一条边都 严格小于limitj。请你返回一个 布尔数组
answer,其中answer.length == queries.length,当queries[j]的查询结果为true时,answer第j个值为true,否则为false。
2022年12月15日
leetcode1945. 字符串转化后的各位数字之和
链接地址:https://leetcode.cn/problems/sum-of-digits-of-string-after-convert/
题意:
给你一个由小写字母组成的字符串
s,以及一个整数k。首先,用字母在字母表中的位置替换该字母,将
s转化 为一个整数(也就是,'a'用1替换,'b'用2替换,...'z'用26替换)。接着,将整数 转换 为其 各位数字之和 。共重复 转换 操作k次 。例如,如果
s = "zbax"且k = 2,那么执行下述步骤后得到的结果是整数8:
- 转化:
"zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124- 转换 #1:
262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17- 转换 #2:
17 ➝ 1 + 7 ➝ 8返回执行上述操作后得到的结果整数。
2022年12月16日
leetcode1785. 构成特定和需要添加的最少元素
链接地址:https://leetcode.cn/problems/minimum-elements-to-add-to-form-a-given-sum/
题意:
给你一个整数数组
nums,和两个整数limit与goal。数组nums有一条重要属性:abs(nums[i]) <= limit。返回使数组元素总和等于
goal所需要向数组中添加的 最少元素数量 ,添加元素 不应改变 数组中abs(nums[i]) <= limit这一属性。注意,如果
x >= 0,那么abs(x)等于x;否则,等于-x。
大感冒(休息一周)
2022年12月23日
leetcode2011. 执行操作后的变量值
链接地址:https://leetcode.cn/problems/final-value-of-variable-after-performing-operations/
题意:
存在一种仅支持 4 种操作和 1 个变量
X的编程语言:
++X和X++使变量X的值 加1--X和X--使变量X的值 减1最初,
X的值是0给你一个字符串数组
operations,这是由操作组成的一个列表,返回执行所有操作后,X的 最终值 。
2022年12月24日
leetcode1754. 构造字典序最大的合并字符串
链接地址:https://leetcode.cn/problems/largest-merge-of-two-strings/
题意:
给你两个字符串
word1和word2。你需要按下述方式构造一个新字符串merge:如果word1或word2非空,选择 下面选项之一 继续操作:
- 如果
word1非空,将word1中的第一个字符附加到merge的末尾,并将其从word1中移除。
- 例如,
word1 = "abc"且merge = "dv",在执行此选项操作之后,word1 = "bc",同时merge = "dva"。- 如果
word2非空,将word2中的第一个字符附加到merge的末尾,并将其从word2中移除。
- 例如,
word2 = "abc"且merge = "",在执行此选项操作之后,word2 = "bc",同时merge = "a"。返回你可以构造的字典序 最大 的合并字符串
merge。长度相同的两个字符串
a和b比较字典序大小,如果在a和b出现不同的第一个位置,a中字符在字母表中的出现顺序位于b中相应字符之后,就认为字符串a按字典序比字符串b更大。例如,"abcd"按字典序比"abcc"更大,因为两个字符串出现不同的第一个位置是第四个字符,而d在字母表中的出现顺序位于c之后。
2022年12月25日
leetcode1739. 放置盒子
链接地址:https://leetcode.cn/problems/building-boxes/
题意:
有一个立方体房间,其长度、宽度和高度都等于
n个单位。请你在房间里放置n个盒子,每个盒子都是一个单位边长的立方体。放置规则如下:
- 你可以把盒子放在地板上的任何地方。
- 如果盒子
x需要放置在盒子y的顶部,那么盒子y竖直的四个侧面都 必须 与另一个盒子或墙相邻。给你一个整数
n,返回接触地面的盒子的 最少 可能数量。
2022年12月26日
leetcode1759. 统计同构子字符串的数目
链接地址:https://leetcode.cn/problems/count-number-of-homogenous-substrings/
题意:
给你一个字符串
s,返回s中 同构子字符串 的数目。由于答案可能很大,只需返回对109 + 7取余 后的结果。同构字符串 的定义为:如果一个字符串中的所有字符都相同,那么该字符串就是同构字符串。
子字符串 是字符串中的一个连续字符序列。
2022年12月27日
leetcode2027. 转换字符串的最少操作次数
链接地址:https://leetcode.cn/problems/minimum-moves-to-convert-string/
题意:
给你一个字符串
s,由n个字符组成,每个字符不是'X'就是'O'。一次 操作 定义为从
s中选出 三个连续字符 并将选中的每个字符都转换为'O'。注意,如果字符已经是'O',只需要保持 不变 。返回将
s中所有字符均转换为'O'需要执行的 最少 操作次数。
2022年12月28日
leetcode1750. 删除字符串两端相同字符后的最短长度
链接地址:https://leetcode.cn/problems/minimum-length-of-string-after-deleting-similar-ends/
题意:
给你一个只包含字符
'a','b'和'c'的字符串s,你可以执行下面这个操作(5 个步骤)任意次:
- 选择字符串
s一个 非空 的前缀,这个前缀的所有字符都相同。- 选择字符串
s一个 非空 的后缀,这个后缀的所有字符都相同。- 前缀和后缀在字符串中任意位置都不能有交集。
- 前缀和后缀包含的所有字符都要相同。
- 同时删除前缀和后缀。
请你返回对字符串
s执行上面操作任意次以后(可能 0 次),能得到的 最短长度 。
2022年12月29日
leetcode2032. 至少在两个数组中出现的值
链接地址:https://leetcode.cn/problems/two-out-of-three/
题意:
给你三个整数数组
nums1、nums2和nums3,请你构造并返回一个 元素各不相同的 数组,且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。
2022年12月30日
leetcode1760. 袋子里最少数目的球
链接地址:https://leetcode.cn/problems/minimum-limit-of-balls-in-a-bag/
题意:
给你一个整数数组
nums,其中nums[i]表示第i个袋子里球的数目。同时给你一个整数maxOperations。你可以进行如下操作至多
maxOperations次:
- 选择任意一个袋子,并将袋子里的球分到 2 个新的袋子中,每个袋子里都有正整数个球。
- 比方说,一个袋子里有
5个球,你可以把它们分到两个新袋子里,分别有1个和4个球,或者分别有2个和3个球。你的开销是单个袋子里球数目的 最大值 ,你想要 最小化 开销。
请你返回进行上述操作后的最小开销。
2022年12月31日
leetcode2037. 使每位学生都有座位的最少移动次数
链接地址:https://leetcode.cn/problems/minimum-number-of-moves-to-seat-everyone/
题意:
一个房间里有
n个座位和n名学生,房间用一个数轴表示。给你一个长度为n的数组seats,其中seats[i]是第i个座位的位置。同时给你一个长度为n的数组students,其中students[j]是第j位学生的位置。你可以执行以下操作任意次:
- 增加或者减少第
i位学生的位置,每次变化量为1(也就是将第i位学生从位置x移动到x + 1或者x - 1)请你返回使所有学生都有座位坐的 最少移动次数 ,并确保没有两位学生的座位相同。
请注意,初始时有可能有多个座位或者多位学生在 同一 位置。

浙公网安备 33010602011771号