2023年7月刷题记录
2023年7月1日
leetcode1. 两数之和
链接地址:https://leetcode.cn/problems/two-sum/
题意:
给定一个整数数组
nums
和一个整数目标值target
,请你在该数组中找出 和为目标值target
的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
2023年7月2日
leetcode2. 两数相加
链接地址:https://leetcode.cn/problems/add-two-numbers/
题意:
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
2023年7月3日
leetcode445. 两数相加 II
链接地址:https://leetcode.cn/problems/add-two-numbers-ii/
题意:
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
2023年7月6日
leetcode2178. 拆分成最多数目的正偶数之和
链接地址:https://leetcode.cn/problems/maximum-split-of-positive-even-integers/
题意:
给你一个整数
finalSum
。请你将它拆分成若干个 互不相同 的正偶数之和,且拆分出来的正偶数数目 最多 。
- 比方说,给你
finalSum = 12
,那么这些拆分是 符合要求 的(互不相同的正偶数且和为finalSum
):(2 + 10)
,(2 + 4 + 6)
和(4 + 8)
。它们中,(2 + 4 + 6)
包含最多数目的整数。注意finalSum
不能拆分成(2 + 2 + 4 + 4)
,因为拆分出来的整数必须互不相同。请你返回一个整数数组,表示将整数拆分成 最多 数目的正偶数数组。如果没有办法将
finalSum
进行拆分,请你返回一个 空 数组。你可以按 任意 顺序返回这些整数。
2023年7月7日
leetcode2679. 矩阵中的和
链接地址:https://leetcode.cn/problems/sum-in-a-matrix/
题意:
给你一个下标从 0 开始的二维整数数组
nums
。一开始你的分数为0
。你需要执行以下操作直到矩阵变为空:
- 矩阵中每一行选取最大的一个数,并删除它。如果一行中有多个最大的数,选择任意一个并删除。
- 在步骤 1 删除的所有数字中找到最大的一个数字,将它添加到你的 分数 中。
请你返回最后的 分数 。
2023年7月8日
leetcode167. 两数之和 II - 输入有序数组
链接地址:https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/
题意:
给你一个下标从 1 开始的整数数组
numbers
,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数target
的两个数。如果设这两个数分别是numbers[index1]
和numbers[index2]
,则1 <= index1 < index2 <= numbers.length
。以长度为 2 的整数数组
[index1, index2]
的形式返回这两个整数的下标index1
和index2
。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。
你所设计的解决方案必须只使用常量级的额外空间。
2023年7月9日
leetcode15. 三数之和
链接地址:https://leetcode.cn/problems/3sum/
题意:
给你一个整数数组
nums
,判断是否存在三元组[nums[i], nums[j], nums[k]]
满足i != j
、i != k
且j != k
,同时还满足nums[i] + nums[j] + nums[k] == 0
。请你返回所有和为
0
且不重复的三元组。注意:答案中不可以包含重复的三元组。
2023年7月10日
leetcode16. 最接近的三数之和
链接地址:https://leetcode.cn/problems/3sum-closest/
题意:
给你一个长度为
n
的整数数组nums
和 一个目标值target
。请你从nums
中选出三个整数,使它们的和与target
最接近。返回这三个数的和。
假定每组输入只存在恰好一个解。
2023年7月11日
leetcode1911. 最大子序列交替和
链接地址:https://leetcode.cn/problems/maximum-alternating-subsequence-sum/
题意:
一个下标从 0 开始的数组的 交替和 定义为 偶数 下标处元素之 和 减去 奇数 下标处元素之 和 。
- 比方说,数组
[4,2,5,3]
的交替和为(4 + 5) - (2 + 3) = 4
。给你一个数组
nums
,请你返回nums
中任意子序列的 最大交替和 (子序列的下标 重新 从 0 开始编号)。一个数组的 子序列 是从原数组中删除一些元素后(也可能一个也不删除)剩余元素不改变顺序组成的数组。比方说,
[2,7,4]
是[4,**2**,3,**7**,2,1,**4**]
的一个子序列(加粗元素),但是[2,4,2]
不是。
2023年7月12日
leetcode2544. 交替数字和
链接地址:https://leetcode.cn/problems/alternating-digit-sum/
题意:
给你一个正整数
n
。n
中的每一位数字都会按下述规则分配一个符号:
- 最高有效位 上的数字分配到 正 号。
- 剩余每位上数字的符号都与其相邻数字相反。
返回所有数字及其对应符号的和。
2023年7月13日
leetcode931. 下降路径最小和
链接地址:https://leetcode.cn/problems/minimum-falling-path-sum/
题意:
给你一个
n x n
的 方形 整数数组matrix
,请你找出并返回通过matrix
的下降路径 的 最小和 。下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置
(row, col)
的下一个元素应当是(row + 1, col - 1)
、(row + 1, col)
或者(row + 1, col + 1)
。
2023年7月14日
leetcode979. 在二叉树中分配硬币
链接地址:https://leetcode.cn/problems/distribute-coins-in-binary-tree/
题意:
给你一个有
n
个结点的二叉树的根结点root
,其中树中每个结点node
都对应有node.val
枚硬币。整棵树上一共有n
枚硬币。在一次移动中,我们可以选择两个相邻的结点,然后将一枚硬币从其中一个结点移动到另一个结点。移动可以是从父结点到子结点,或者从子结点移动到父结点。
返回使每个结点上 只有 一枚硬币所需的 最少 移动次数。
2023年7月15日
leetcode18. 四数之和
链接地址:https://leetcode.cn/problems/4sum/
题意:
给你一个由
n
个整数组成的数组nums
,和一个目标值target
。请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]]
(若两个四元组元素一一对应,则认为两个四元组重复):
0 <= a, b, c, d < n
a
、b
、c
和d
互不相同nums[a] + nums[b] + nums[c] + nums[d] == target
你可以按 任意顺序 返回答案 。
2023年7月16日
leetcode611. 有效三角形的个数
链接地址:https://leetcode.cn/problems/valid-triangle-number/
题意:
给定一个包含非负整数的数组
nums
,返回其中可以组成三角形三条边的三元组个数。
2023年7月17日
leetcode415. 字符串相加
链接地址:https://leetcode.cn/problems/add-strings/
题意:
给定两个字符串形式的非负整数
num1
和num2
,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如
BigInteger
), 也不能直接将输入的字符串转换为整数形式。
2023年7月18日
leetcode263. 丑数
链接地址:https://leetcode.cn/problems/ugly-number/
题意:
丑数 就是只包含质因数
2
、3
和5
的正整数。给你一个整数
n
,请你判断n
是否为 丑数 。如果是,返回true
;否则,返回false
。
2023年7月19日
leetcode258. 各位相加
链接地址:https://leetcode.cn/problems/add-digits/
题意:
给定一个非负整数
num
,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。
leetcode874. 模拟行走机器人
链接地址:https://leetcode.cn/problems/walking-robot-simulation/
题意:
机器人在一个无限大小的 XY 网格平面上行走,从点
(0, 0)
处开始出发,面向北方。该机器人可以接收以下三种类型的命令commands
:
-2
:向左转90
度-1
:向右转90
度1 <= x <= 9
:向前移动x
个单位长度在网格上有一些格子被视为障碍物
obstacles
。第i
个障碍物位于网格点obstacles[i] = (xi, yi)
。机器人无法走到障碍物上,它将会停留在障碍物的前一个网格方块上,但仍然可以继续尝试进行该路线的其余部分。
返回从原点到机器人所有经过的路径点(坐标为整数)的最大欧式距离的平方。(即,如果距离为
5
,则返回25
)注意:
北表示
+Y
方向。东表示
+X
方向。南表示
-Y
方向。西表示
-X
方向。
-3 * 104 <= xi, yi <= 3 * 104
2023年7月20日
leetcode918. 环形子数组的最大和
链接地址:https://leetcode.cn/problems/maximum-sum-circular-subarray/
题意:
给定一个长度为
n
的环形整数数组nums
,返回nums
的非空 子数组 的最大可能和 。环形数组 意味着数组的末端将会与开头相连呈环状。形式上,
nums[i]
的下一个元素是nums[(i + 1) % n]
,nums[i]
的前一个元素是nums[(i - 1 + n) % n]
。子数组 最多只能包含固定缓冲区
nums
中的每个元素一次。形式上,对于子数组nums[i], nums[i + 1], ..., nums[j]
,不存在i <= k1, k2 <= j
其中k1 % n == k2 % n
。
思考题
如果改成选两个不重叠的非空连续子数组,这两个子数组的元素和最大是多少?
-
非环形数组:P2642 双子序列最大和
-
环形数组:P1121 环状最大两段子段和
相似题目
- 最大子数组和
- 找到最大开销的子字符串
- 拼接数组的最大分数
- 删除一次得到子数组最大和
- 矩形区域不超过 K 的最大数值和
作者:灵茶山艾府
链接:https://leetcode.cn/problems/maximum-sum-circular-subarray/solutions/2351107/mei-you-si-lu-yi-zhang-tu-miao-dong-pyth-ilqh/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2023年7月21日
leetcode53. 最大子数组和
链接地址:https://leetcode.cn/problems/maximum-subarray/
题意:
给你一个整数数组
nums
,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。
2023年7月22日
leetcode860. 柠檬水找零
链接地址:https://leetcode.cn/problems/lemonade-change/
题意:
在柠檬水摊上,每一杯柠檬水的售价为
5
美元。顾客排队购买你的产品,(按账单bills
支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付
5
美元、10
美元或20
美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5
美元。注意,一开始你手头没有任何零钱。
给你一个整数数组
bills
,其中bills[i]
是第i
位顾客付的账。如果你能给每位顾客正确找零,返回true
,否则返回false
。
2023年7月23日
leetcode42. 接雨水
链接地址:https://leetcode.cn/problems/trapping-rain-water/
题意:
给定
n
个非负整数表示每个宽度为1
的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
2023年7月24日
leetcode771. 宝石与石头
链接地址:https://leetcode.cn/problems/jewels-and-stones/
题意:
给你一个字符串
jewels
代表石头中宝石的类型,另有一个字符串stones
代表你拥有的石头。stones
中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。字母区分大小写,因此
"a"
和"A"
是不同类型的石头。
2023年7月25日
leetcode2208. 将数组和减半的最少操作次数
链接地址:https://leetcode.cn/problems/minimum-operations-to-halve-array-sum/
题意:
给你一个正整数数组
nums
。每一次操作中,你可以从nums
中选择 任意 一个数并将它减小到 恰好 一半。(注意,在后续操作中你可以对减半过的数继续执行操作)请你返回将
nums
数组和 至少 减少一半的 最少 操作数。
2023年7月26日
leetcode2562. 找出数组的串联值
链接地址:https://leetcode.cn/problems/find-the-array-concatenation-value/
题意:
给你一个下标从 0 开始的整数数组
nums
。现定义两个数字的 串联 是由这两个数值串联起来形成的新数字。
- 例如,
15
和49
的串联是1549
。
nums
的 串联值 最初等于0
。执行下述操作直到nums
变为空:
- 如果
nums
中存在不止一个数字,分别选中nums
中的第一个元素和最后一个元素,将二者串联得到的值加到nums
的 串联值 上,然后从nums
中删除第一个和最后一个元素。- 如果仅存在一个元素,则将该元素的值加到
nums
的串联值上,然后删除这个元素。返回执行完所有操作后
nums
的串联值。
2023年7月27日
leetcode2500. 删除每行中的最大值
链接地址:https://leetcode.cn/problems/delete-greatest-value-in-each-row/
题意:
给你一个
m x n
大小的矩阵grid
,由若干正整数组成。执行下述操作,直到
grid
变为空矩阵:
- 从每一行删除值最大的元素。如果存在多个这样的值,删除其中任何一个。
- 将删除元素中的最大值与答案相加。
注意 每执行一次操作,矩阵中列的数据就会减 1 。
返回执行上述操作后的答案。
2023年7月28日
leetcode剑指 Offer 03. 数组中重复的数字
链接地址:https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/
题意:
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
2023年7月29日
leetcode141. 环形链表
链接地址:https://leetcode.cn/problems/linked-list-cycle/
题意:
给你一个链表的头节点
head
,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪
next
指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数pos
来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos
不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回
true
。 否则,返回false
。
2023年7月30日
leetcode142. 环形链表 II
链接地址:https://leetcode.cn/problems/linked-list-cycle-ii/
题意:
给定一个链表的头节点
head
,返回链表开始入环的第一个节点。 如果链表无环,则返回null
。如果链表中有某个节点,可以通过连续跟踪
next
指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数pos
来表示链表尾连接到链表中的位置(索引从 0 开始)。如果pos
是-1
,则在该链表中没有环。注意:pos
不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。
2023年7月31日
leetcode143. 重排链表
链接地址:https://leetcode.cn/problems/reorder-list/
题意:
给定一个单链表
L
的头节点head
,单链表L
表示为:L0 → L1 → … → Ln - 1 → Ln
请将其重新排列后变为:
L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。