2023年11月刷题记录
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。

浙公网安备 33010602011771号