2023年11月1日
【leetcode】2127. 参加会议的最多员工数
题意:
一个公司准备组织一场会议,邀请名单上有
n
位员工。公司准备了一张 圆形 的桌子,可以坐下 任意数目 的员工。员工编号为
0
到n - 1
。每位员工都有一位 喜欢 的员工,每位员工 当且仅当 他被安排在喜欢员工的旁边,他才会参加会议。每位员工喜欢的员工 不会 是他自己。给你一个下标从 0 开始的整数数组
favorite
,其中favorite[i]
表示第i
位员工喜欢的员工。请你返回参加会议的 最多员工数目 。
2023年11月2日
【leetcode】2103. 环和杆
题意:
总计有
n
个环,环的颜色可以是红、绿、蓝中的一种。这些环分别穿在 10 根编号为0
到9
的杆上。给你一个长度为
2n
的字符串rings
,表示这n
个环在杆上的分布。rings
中每两个字符形成一个 颜色位置对 ,用于描述每个环:
- 第
i
对中的 第一个 字符表示第i
个环的 颜色('R'
、'G'
、'B'
)。- 第
i
对中的 第二个 字符表示第i
个环的 位置,也就是位于哪根杆上('0'
到'9'
)。例如,
"R3G2B1"
表示:共有n == 3
个环,红色的环在编号为 3 的杆上,绿色的环在编号为 2 的杆上,蓝色的环在编号为 1 的杆上。找出所有集齐 全部三种颜色 环的杆,并返回这种杆的数量。
2023年11月3日
【leetcode】117. 填充每个节点的下一个右侧节点指针 II
题意:
给定一个二叉树:
struct Node { int val; Node *left; Node *right; Node *next; }
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为
NULL
。初始状态下,所有 next 指针都被设置为
NULL
。
2023年11月4日
【leetcode】421. 数组中两个数的最大异或值
题意:
给你一个整数数组
nums
,返回nums[i] XOR nums[j]
的最大运算结果,其中0 ≤ i ≤ j < n
。
2023年11月5日
【leetcode】187. 重复的DNA序列
题意:
DNA序列 由一系列核苷酸组成,缩写为
'A'
,'C'
,'G'
和'T'
.。
- 例如,
"ACGAATTCCG"
是一个 DNA序列 。在研究 DNA 时,识别 DNA 中的重复序列非常有用。
给定一个表示 DNA序列 的字符串
s
,返回所有在 DNA 分子中出现不止一次的 长度为10
的序列(子字符串)。你可以按 任意顺序 返回答案。
2023年11月6日
【leetcode】318. 最大单词长度乘积
题意:
给你一个字符串数组
words
,找出并返回length(words[i]) * length(words[j])
的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回0
。
2023年11月7日
【leetcode】2586. 统计范围内的元音字符串数
题意:
给你一个下标从 0 开始的字符串数组
words
和两个整数:left
和right
。如果字符串以元音字母开头并以元音字母结尾,那么该字符串就是一个 元音字符串 ,其中元音字母是
'a'
、'e'
、'i'
、'o'
、'u'
。返回
words[i]
是元音字符串的数目,其中i
在闭区间[left, right]
内。
2023年11月8日
【leetcode】2609. 最长平衡子字符串
题意:
给你一个仅由
0
和1
组成的二进制字符串s
。如果子字符串中 所有的
0
都在1
之前 且其中0
的数量等于1
的数量,则认为s
的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。返回
s
中最长的平衡子字符串长度。子字符串是字符串中的一个连续字符序列。
2023年11月9日
【leetcode】2258. 逃离火灾
题意:
给你一个下标从 0 开始大小为
m x n
的二维整数数组grid
,它表示一个网格图。每个格子为下面 3 个值之一:
0
表示草地。1
表示着火的格子。2
表示一座墙,你跟火都不能通过这个格子。一开始你在最左上角的格子
(0, 0)
,你想要到达最右下角的安全屋格子(m - 1, n - 1)
。每一分钟,你可以移动到 相邻 的草地格子。每次你移动 之后 ,着火的格子会扩散到所有不是墙的 相邻 格子。请你返回你在初始位置可以停留的 最多 分钟数,且停留完这段时间后你还能安全到达安全屋。如果无法实现,请你返回
-1
。如果不管你在初始位置停留多久,你 总是 能到达安全屋,请你返回10^9
。注意,如果你到达安全屋后,火马上到了安全屋,这视为你能够安全到达安全屋。
如果两个格子有共同边,那么它们为 相邻 格子。
2023年11月10日
【leetcode】2300. 咒语和药水的成功对数
题意:
给你两个正整数数组
spells
和potions
,长度分别为n
和m
,其中spells[i]
表示第i
个咒语的能量强度,potions[j]
表示第j
瓶药水的能量强度。同时给你一个整数
success
。一个咒语和药水的能量强度 相乘 如果 大于等于success
,那么它们视为一对 成功 的组合。请你返回一个长度为
n
的整数数组pairs
,其中pairs[i]
是能跟第i
个咒语成功组合的 药水 数目。
2023年11月11日
【leetcode】765. 情侣牵手
题意:
n
对情侣坐在连续排列的2n
个座位上,想要牵到对方的手。人和座位由一个整数数组
row
表示,其中row[i]
是坐在第i
个座位上的人的 ID。情侣们按顺序编号,第一对是(0, 1)
,第二对是(2, 3)
,以此类推,最后一对是(2n-2, 2n-1)
。返回 最少交换座位的次数,以便每对情侣可以并肩坐在一起。 每次交换可选择任意两人,让他们站起来交换座位。
2023年11月12日
【leetcode】715. Range 模块
题意:
Range模块是跟踪数字范围的模块。设计一个数据结构来跟踪表示为 半开区间 的范围并查询它们。
半开区间
[left, right)
表示所有left <= x < right
的实数x
。实现
RangeModule
类:
RangeModule()
初始化数据结构的对象。void addRange(int left, int right)
添加 半开区间[left, right)
,跟踪该区间中的每个实数。添加与当前跟踪的数字部分重叠的区间时,应当添加在区间[left, right)
中尚未跟踪的任何数字到该区间中。boolean queryRange(int left, int right)
只有在当前正在跟踪区间[left, right)
中的每一个实数时,才返回true
,否则返回false
。void removeRange(int left, int right)
停止跟踪 半开区间[left, right)
中当前正在跟踪的每个实数。
2023年11月15日
【leetcode】2656. K 个元素的最大和
题意:
给你一个下标从 0 开始的整数数组
nums
和一个整数k
。你需要执行以下操作 恰好k
次,最大化你的得分:
- 从
nums
中选择一个元素m
。- 将选中的元素
m
从数组中删除。- 将新元素
m + 1
添加到数组中。- 你的得分增加
m
。请你返回执行以上操作恰好
k
次后的最大得分。
2023年11月16日
【leetcode】2760. 最长奇偶子数组
题意:
给你一个下标从 0 开始的整数数组
nums
和一个整数threshold
。请你从
nums
的子数组中找出以下标l
开头、下标r
结尾(0 <= l <= r < nums.length)
且满足以下条件的 最长子数组 :
nums[l] % 2 == 0
- 对于范围
[l, r - 1]
内的所有下标i
,nums[i] % 2 != nums[i + 1] % 2
- 对于范围
[l, r]
内的所有下标i
,nums[i] <= threshold
以整数形式返回满足题目要求的最长子数组的长度。
注意:子数组 是数组中的一个连续非空元素序列。
2023年11月18日
【leetcode】2342. 数位和相等数对的最大和
题意:
给你一个下标从 0 开始的数组
nums
,数组中的元素都是 正 整数。请你选出两个下标i
和j
(i != j
),且nums[i]
的数位和 与nums[j]
的数位和相等。请你找出所有满足条件的下标
i
和j
,找出并返回nums[i] + nums[j]
可以得到的 最大值 。
2023年11月20日
【leetcode】53. 最大子数组和
题意:
给你一个整数数组
nums
,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。
2023年11月21日
【leetcode】2216. 美化数组的最少删除数
题意:
给你一个下标从 0 开始的整数数组
nums
,如果满足下述条件,则认为数组nums
是一个 美丽数组 :
nums.length
为偶数- 对所有满足
i % 2 == 0
的下标i
,nums[i] != nums[i + 1]
均成立注意,空数组同样认为是美丽数组。
你可以从
nums
中删除任意数量的元素。当你删除一个元素时,被删除元素右侧的所有元素将会向左移动一个单位以填补空缺,而左侧的元素将会保持 不变 。返回使
nums
变为美丽数组所需删除的 最少 元素数目。
2023年11月22日
【leetcode】2304. 网格中的最小路径代价
题意:
给你一个下标从 0 开始的整数矩阵
grid
,矩阵大小为m x n
,由从0
到m * n - 1
的不同整数组成。你可以在此矩阵中,从一个单元格移动到 下一行 的任何其他单元格。如果你位于单元格(x, y)
,且满足x < m - 1
,你可以移动到(x + 1, 0)
,(x + 1, 1)
, ...,(x + 1, n - 1)
中的任何一个单元格。注意: 在最后一行中的单元格不能触发移动。每次可能的移动都需要付出对应的代价,代价用一个下标从 0 开始的二维数组
moveCost
表示,该数组大小为(m * n) x n
,其中moveCost[i][j]
是从值为i
的单元格移动到下一行第j
列单元格的代价。从grid
最后一行的单元格移动的代价可以忽略。
grid
一条路径的代价是:所有路径经过的单元格的 值之和 加上 所有移动的 代价之和 。从 第一行 任意单元格出发,返回到达 最后一行 任意单元格的最小路径代价。
2023年11月23日
【leetcode】1410. HTML 实体解析器
题意:
「HTML 实体解析器」 是一种特殊的解析器,它将 HTML 代码作为输入,并用字符本身替换掉所有这些特殊的字符实体。
HTML 里这些特殊字符和它们对应的字符实体包括:
- 双引号:字符实体为
"
,对应的字符是"
。- 单引号:字符实体为
'
,对应的字符是'
。- 与符号:字符实体为
&
,对应对的字符是&
。- 大于号:字符实体为
>
,对应的字符是>
。- 小于号:字符实体为
<
,对应的字符是<
。- 斜线号:字符实体为
⁄
,对应的字符是/
。给你输入字符串
text
,请你实现一个 HTML 实体解析器,返回解析器解析后的结果。
2023年11月24日
【leetcode】2824. 统计和小于目标的下标对数目
题意:
给你一个下标从 0 开始长度为
n
的整数数组nums
和一个整数target
,请你返回满足0 <= i < j < n
且nums[i] + nums[j] < target
的下标对(i, j)
的数目。
2023年11月25日
【leetcode】1457. 二叉树中的伪回文路径
题意:
给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。
请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。
2023年11月26日
【leetcode】828. 统计子串中的唯一字符
题意:
我们定义了一个函数
countUniqueChars(s)
来统计字符串s
中的唯一字符,并返回唯一字符的个数。例如:
s = "LEETCODE"
,则其中"L"
,"T"
,"C"
,"O"
,"D"
都是唯一字符,因为它们只出现一次,所以countUniqueChars(s) = 5
。本题将会给你一个字符串
s
,我们需要返回countUniqueChars(t)
的总和,其中t
是s
的子字符串。输入用例保证返回值为 32 位整数。注意,某些子字符串可能是重复的,但你统计时也必须算上这些重复的子字符串(也就是说,你必须统计
s
的所有子字符串中的唯一字符)。
2023年11月27日
【leetcode】907. 子数组的最小值之和
题意:
给定一个整数数组
arr
,找到min(b)
的总和,其中b
的范围为arr
的每个(连续)子数组。由于答案可能很大,因此 返回答案模
10^9 + 7
。
2023年11月28日
【leetcode】1670. 设计前中后队列
题意:
请你设计一个队列,支持在前,中,后三个位置的
push
和pop
操作。请你完成
FrontMiddleBack
类:
FrontMiddleBack()
初始化队列。void pushFront(int val)
将val
添加到队列的 最前面 。void pushMiddle(int val)
将val
添加到队列的 正中间 。void pushBack(int val)
将val
添加到队里的 最后面 。int popFront()
将 最前面 的元素从队列中删除并返回值,如果删除之前队列为空,那么返回-1
。int popMiddle()
将 正中间 的元素从队列中删除并返回值,如果删除之前队列为空,那么返回-1
。int popBack()
将 最后面 的元素从队列中删除并返回值,如果删除之前队列为空,那么返回-1
。请注意当有 两个 中间位置的时候,选择靠前面的位置进行操作。比方说:
- 将
6
添加到[1, 2, 3, 4, 5]
的中间位置,结果数组为[1, 2, **6**, 3, 4, 5]
。- 从
[1, 2, **3**, 4, 5, 6]
的中间位置弹出元素,返回3
,数组变为[1, 2, 4, 5, 6]
。
2023年11月29日
【leetcode】2336. 无限集中的最小数字
题意:
现有一个包含所有正整数的集合
[1, 2, 3, 4, 5, ...]
。实现
SmallestInfiniteSet
类:
SmallestInfiniteSet()
初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest()
移除 并返回该无限集中的最小整数。void addBack(int num)
如果正整数num
不 存在于无限集中,则将一个num
添加 到该无限集最后。
2023年11月30日
【leetcode】2336. 无限集中的最小数字
题意:
如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :
- 操作 1:交换任意两个 现有 字符。
- 例如,
abcde -> aecdb
- 操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。
- 例如,
aacabb -> bbcbaa
(所有a
转化为b
,而所有的b
转换为a
)你可以根据需要对任意一个字符串多次使用这两种操作。
给你两个字符串,
word1
和word2
。如果word1
和word2
接近 ,就返回true
;否则,返回false
。