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. 矩阵中每一行选取最大的一个数,并删除它。如果一行中有多个最大的数,选择任意一个并删除。
  2. 在步骤 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] 的形式返回这两个整数的下标 index1index2

你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

你所设计的解决方案必须只使用常量级的额外空间。




2023年7月9日

leetcode15. 三数之和

链接地址:https://leetcode.cn/problems/3sum/

题意:

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != kj != 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/

题意:

给你一个正整数 nn 中的每一位数字都会按下述规则分配一个符号:

  • 最高有效位 上的数字分配到 号。
  • 剩余每位上数字的符号都与其相邻数字相反。

返回所有数字及其对应符号的和。




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
  • abcd 互不相同
  • 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/

题意:

给定两个字符串形式的非负整数 num1num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。




2023年7月18日

leetcode263. 丑数

链接地址:https://leetcode.cn/problems/ugly-number/

题意:

丑数 就是只包含质因数 235 的正整数。

给你一个整数 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

思考题

如果改成选两个不重叠的非空连续子数组,这两个子数组的元素和最大是多少?

相似题目

  1. 最大子数组和
  2. 找到最大开销的子字符串
  3. 拼接数组的最大分数
  4. 删除一次得到子数组最大和
  5. 矩形区域不超过 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

现定义两个数字的 串联 是由这两个数值串联起来形成的新数字。

  • 例如,1549 的串联是 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 → …

不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。




posted @ 2023-08-02 00:06  jiamian22  阅读(38)  评论(0编辑  收藏  举报