2023年6月刷题记录
2023年6月1日
leetcode2517. 礼盒的最大甜蜜度
链接地址:https://leetcode.cn/problems/maximum-tastiness-of-candy-basket/
题意:
给你一个正整数数组
price
,其中price[i]
表示第i
类糖果的价格,另给你一个正整数k
。商店组合
k
类 不同 糖果打包成礼盒出售。礼盒的 甜蜜度 是礼盒中任意两种糖果 价格 绝对差的最小值。返回礼盒的 最大 甜蜜度。
2023年6月2日
leetcode2559. 统计范围内的元音字符串数
链接地址:https://leetcode.cn/problems/count-vowel-strings-in-ranges/
题意:
给你一个下标从 0 开始的字符串数组
words
以及一个二维整数数组queries
。每个查询
queries[i] = [li, ri]
会要求我们统计在words
中下标在li
到ri
范围内(包含 这两个值)并且以元音开头和结尾的字符串的数目。返回一个整数数组,其中数组的第
i
个元素对应第i
个查询的答案。注意:元音字母是
'a'
、'e'
、'i'
、'o'
和'u'
。
2023年6月3日
leetcode1156. 单字符重复子串的最大长度
链接地址:https://leetcode.cn/problems/swap-for-longest-repeated-character-substring/
题意:
如果字符串中的所有字符都相同,那么这个字符串是单字符重复的字符串。
给你一个字符串
text
,你只能交换其中两个字符一次或者什么都不做,然后得到一些单字符重复的子串。返回其中最长的子串的长度。
2023年6月4日
leetcode2465. 不同的平均值数目
链接地址:https://leetcode.cn/problems/number-of-distinct-averages/
题意:
给你一个下标从 0 开始长度为 偶数 的整数数组
nums
。只要
nums
不是 空数组,你就重复执行以下步骤:
- 找到
nums
中的最小值,并删除它。- 找到
nums
中的最大值,并删除它。- 计算删除两数的平均值。
两数
a
和b
的 平均值 为(a + b) / 2
。
- 比方说,
2
和3
的平均值是(2 + 3) / 2 = 2.5
。返回上述过程能得到的 不同 平均值的数目。
注意 ,如果最小值或者最大值有重复元素,可以删除任意一个。
2023年6月5日
leetcode2460. 对数组执行操作
链接地址:https://leetcode.cn/problems/apply-operations-to-an-array/
题意:
给你一个下标从 0 开始的数组
nums
,数组大小为n
,且由 非负 整数组成。你需要对数组执行
n - 1
步操作,其中第i
步操作(从 0 开始计数)要求对nums
中第i
个元素执行下述指令:
- 如果
nums[i] == nums[i + 1]
,则nums[i]
的值变成原来的2
倍,nums[i + 1]
的值变成0
。否则,跳过这步操作。在执行完 全部 操作后,将所有
0
移动 到数组的 末尾 。
- 例如,数组
[1,0,2,0,0,1]
将所有0
移动到末尾后变为[1,2,1,0,0,0]
。返回结果数组。
注意 操作应当 依次有序 执行,而不是一次性全部执行。
2023年6月6日
leetcode2352. 相等行列对
链接地址:https://leetcode.cn/problems/equal-row-and-column-pairs/
题意:
给你一个下标从 0 开始、大小为
n x n
的整数矩阵grid
,返回满足Ri
行和Cj
列相等的行列对(Ri, Cj)
的数目。如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。
2023年6月7日
leetcode2611. 老鼠和奶酪
链接地址:https://leetcode.cn/problems/mice-and-cheese/
题意:
有两只老鼠和
n
块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉。下标为
i
处的奶酪被吃掉的得分为:
- 如果第一只老鼠吃掉,则得分为
reward1[i]
。- 如果第二只老鼠吃掉,则得分为
reward2[i]
。给你一个正整数数组
reward1
,一个正整数数组reward2
,和一个非负整数k
。请你返回第一只老鼠恰好吃掉
k
块奶酪的情况下,最大 得分为多少。
2023年6月8日
leetcode202. 快乐数
链接地址:https://leetcode.cn/problems/happy-number/
题意:
编写一个算法来判断一个数
n
是不是快乐数。「快乐数」 定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果这个过程 结果为 1,那么这个数就是快乐数。
如果
n
是 快乐数 就返回true
;不是,则返回false
。
2023年6月9日
leetcode374. 猜数字大小
链接地址:https://leetcode.cn/problems/guess-number-higher-or-lower/
题意:
猜数字游戏的规则如下:
- 每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。
- 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。
你可以通过调用一个预先定义好的接口
int guess(int num)
来获取猜测结果,返回值一共有 3 种可能的情况(-1
,1
或0
):
- -1:我选出的数字比你猜的数字小
pick < num
- 1:我选出的数字比你猜的数字大
pick > num
- 0:我选出的数字和你猜的数字一样。恭喜!你猜对了!
pick == num
返回我选出的数字。
2023年6月10日
leetcode75. 颜色分类
链接地址:https://leetcode.cn/problems/sort-colors/
题意:
给定一个包含红色、白色和蓝色、共
n
个元素的数组nums
,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数
0
、1
和2
分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。
2023年6月11日
leetcode1171. 从链表中删去总和值为零的连续节点
链接地址:https://leetcode.cn/problems/remove-zero-sum-consecutive-nodes-from-linked-list/
题意:
给你一个链表的头节点
head
,请你编写代码,反复删去链表中由 总和 值为0
的连续节点组成的序列,直到不存在这样的序列为止。删除完毕后,请你返回最终结果链表的头节点。
你可以返回任何满足题目要求的答案。
2023年6月12日
leetcode1483. 树节点的第 K 个祖先
链接地址:https://leetcode.cn/problems/kth-ancestor-of-a-tree-node/
题意:
给你一棵树,树上有
n
个节点,按从0
到n-1
编号。树以父节点数组的形式给出,其中parent[i]
是节点i
的父节点。树的根节点是编号为0
的节点。树节点的第
k
个祖先节点是从该节点到根节点路径上的第k
个节点。实现
TreeAncestor
类:
TreeAncestor(int n, int[] parent)
对树和父数组中的节点数初始化对象。getKthAncestor(int node, int k)
返回节点node
的第k
个祖先节点。如果不存在这样的祖先节点,返回-1
。
2023年6月13日
leetcode2475. 数组中不等三元组的数目
链接地址:https://leetcode.cn/problems/number-of-unequal-triplets-in-array/
题意:
给你一个下标从 0 开始的正整数数组
nums
。请你找出并统计满足下述条件的三元组(i, j, k)
的数目:
0 <= i < j < k < nums.length
nums[i]
、nums[j]
和nums[k]
两两不同。
- 换句话说:
nums[i] != nums[j]
、nums[i] != nums[k]
且nums[j] != nums[k]
。返回满足上述条件三元组的数目。
2023年6月14日
leetcode1375. 二进制字符串前缀一致的次数
链接地址:https://leetcode.cn/problems/number-of-times-binary-string-is-prefix-aligned/
题意:
给你一个长度为
n
、下标从 1 开始的二进制字符串,所有位最开始都是0
。我们会按步翻转该二进制字符串的所有位(即,将0
变为1
)。给你一个下标从 1 开始的整数数组
flips
,其中flips[i]
表示对应下标i
的位将会在第i
步翻转。二进制字符串 前缀一致 需满足:在第
i
步之后,在 闭 区间[1, i]
内的所有位都是 1 ,而其他位都是 0 。返回二进制字符串在翻转过程中 前缀一致 的次数。
2023年6月15日
leetcode1177. 构建回文串检测
链接地址:https://leetcode.cn/problems/can-make-palindrome-from-substring/
题意:
给你一个字符串
s
,请你对s
的子串进行检测。每次检测,待检子串都可以表示为
queries[i] = [left, right, k]
。我们可以 重新排列 子串s[left], ..., s[right]
,并从中选择 最多k
项替换成任何小写英文字母。如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结果为
true
,否则结果为false
。返回答案数组
answer[]
,其中answer[i]
是第i
个待检子串queries[i]
的检测结果。注意:在替换时,子串中的每个字母都必须作为 独立的 项进行计数,也就是说,如果
s[left..right] = "aaa"
且k = 2
,我们只能替换其中的两个字母。(另外,任何检测都不会修改原始字符串s
,可以认为每次检测都是独立的)
2023年6月16日
leetcode2154. 将找到的值乘以 2
链接地址:https://leetcode.cn/problems/keep-multiplying-found-values-by-two/
题意:
给你一个整数数组
nums
,另给你一个整数original
,这是需要在nums
中搜索的第一个数字。接下来,你需要按下述步骤操作:
- 如果在
nums
中找到original
,将original
乘以 2 ,得到新original
(即,令original = 2 * original
)。- 否则,停止这一过程。
- 只要能在数组中找到新
original
,就对新original
继续 重复 这一过程。返回
original
的 最终 值。
2023年6月17日
leetcode402. 移掉 K 位数字
链接地址:https://leetcode.cn/problems/remove-k-digits/
题意:
给你一个以字符串表示的非负整数
num
和一个整数k
,移除这个数中的k
位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。
2023年6月18日
leetcode2481. 分割圆的最少切割次数
链接地址:https://leetcode.cn/problems/minimum-cuts-to-divide-a-circle/
题意:
圆内一个 有效切割 ,符合以下二者之一:
- 该切割是两个端点在圆上的线段,且该线段经过圆心。
- 该切割是一端在圆心另一端在圆上的线段。
给你一个整数
n
,请你返回将圆切割成相等的n
等分的 最少 切割次数。
2023年6月19日
leetcode1254. 统计封闭岛屿的数目
链接地址:https://leetcode.cn/problems/number-of-closed-islands/
题意:
二维矩阵
grid
由0
(土地)和1
(水)组成。岛是由最大的4个方向连通的0
组成的群,封闭岛是一个完全
由1包围(左、上、右、下)的岛。请返回 封闭岛屿 的数目。
2023年6月20日
leetcode1262. 可被三整除的最大和
链接地址:https://leetcode.cn/problems/greatest-sum-divisible-by-three/
题意:
给你一个整数数组
nums
,请你找出并返回能被三整除的元素最大和。
2023年6月21日
leetcodeLCP 41. 黑白翻转棋
链接地址:https://leetcode.cn/problems/fHi6rV/
题意:
在
n*m
大小的棋盘中,有黑白两种棋子,黑棋记作字母"X"
, 白棋记作字母"O"
,空余位置记作"."
。当落下的棋子与其他相同颜色的棋子在行、列或对角线完全包围(中间不存在空白位置)另一种颜色的棋子,则可以翻转这些棋子的颜色。在黑白翻转棋项目中,将提供给选手一个未形成可翻转棋子的棋盘残局,其状态记作
chessboard
。若下一步可放置一枚黑棋,请问选手最多能翻转多少枚白棋。注意:
- 若翻转白棋成黑棋后,棋盘上仍存在可以翻转的白棋,将可以 继续 翻转白棋
- 输入数据保证初始棋盘状态无可以翻转的棋子且存在空余位置
2023年6月22日
leetcode 面试题 16.19. 水域大小
链接地址:https://leetcode.cn/problems/pond-sizes-lcci/
题意:
你有一个用于表示一片土地的整数矩阵
land
,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。
2023年6月23日
leetcode2496. 数组中字符串的最大值
链接地址:https://leetcode.cn/problems/maximum-value-of-a-string-in-an-array/
题意:
一个由字母和数字组成的字符串的 值 定义如下:
- 如果字符串 只 包含数字,那么值为该字符串在
10
进制下的所表示的数字。- 否则,值为字符串的 长度 。
给你一个字符串数组
strs
,每个字符串都只由字母和数字组成,请你返回strs
中字符串的 最大值 。
2023年6月24日
leetcode316. 去除重复字母
链接地址:https://leetcode.cn/problems/remove-duplicate-letters/
题意:
给你一个字符串
s
,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。
2023年6月25日
leetcode1401. 圆和矩形是否有重叠
链接地址:https://leetcode.cn/problems/remove-duplicate-letters/
题意:
给你一个以
(radius, xCenter, yCenter)
表示的圆和一个与坐标轴平行的矩形(x1, y1, x2, y2)
,其中(x1, y1)
是矩形左下角的坐标,而(x2, y2)
是右上角的坐标。如果圆和矩形有重叠的部分,请你返回
true
,否则返回false
。换句话说,请你检测是否 存在 点
(xi, yi)
,它既在圆上也在矩形上(两者都包括点落在边界上的情况)。
2023年6月26日
leetcode2485. 找出中枢整数
链接地址:https://leetcode.cn/problems/find-the-pivot-integer/
题意:
给你一个正整数
n
,找出满足下述条件的 中枢整数x
:
1
和x
之间的所有元素之和等于x
和n
之间所有元素之和。返回中枢整数
x
。如果不存在中枢整数,则返回-1
。题目保证对于给定的输入,至多存在一个中枢整数。
2023年6月27日
leetcode1186. 删除一次得到子数组最大和
链接地址:https://leetcode.cn/problems/maximum-subarray-sum-with-one-deletion/
题意:
给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最大的。
注意,删除一个元素后,子数组 不能为空。
2023年6月28日
leetcode1081. 不同字符的最小子序列
链接地址:https://leetcode.cn/problems/smallest-subsequence-of-distinct-characters/
题意:
返回
s
字典序最小的子序列,该子序列包含s
的所有不同字符,且只包含一次。
2023年6月29日
leetcode1253. 重构 2 行二进制矩阵
链接地址:https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/
题意:
给你一个
2
行n
列的二进制数组:
- 矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是
0
就是1
。- 第
0
行的元素之和为upper
。- 第
1
行的元素之和为lower
。- 第
i
列(从0
开始编号)的元素之和为colsum[i]
,colsum
是一个长度为n
的整数数组。你需要利用
upper
,lower
和colsum
来重构这个矩阵,并以二维整数数组的形式返回它。如果有多个不同的答案,那么任意一个都可以通过本题。
如果不存在符合要求的答案,就请返回一个空的二维数组。
2023年6月30日
leetcode2490. 回环句
链接地址:https://leetcode.cn/problems/circular-sentence/
题意:
句子 是由单个空格分隔的一组单词,且不含前导或尾随空格。
- 例如,
"Hello World"
、"HELLO"
、"hello world hello world"
都是符合要求的句子。单词 仅 由大写和小写英文字母组成。且大写和小写字母会视作不同字符。
如果句子满足下述全部条件,则认为它是一个 回环句 :
- 单词的最后一个字符和下一个单词的第一个字符相等。
- 最后一个单词的最后一个字符和第一个单词的第一个字符相等。
例如,
"leetcode exercises sound delightful"
、"eetcode"
、"leetcode eats soul"
都是回环句。然而,"Leetcode is cool"
、"happy Leetcode"
、"Leetcode"
和"I like Leetcode"
都 不 是回环句。给你一个字符串
sentence
,请你判断它是不是一个回环句。如果是,返回true
;否则,返回false
。