自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 3261. 统计满足 K 约束的子字符串数量 II

ri] 中满足 k 约束的子字符串的数量。在滑窗的过程中,如果发现窗口不满足要求,那么在移动左端点 l 之前,可以记录 right[l]=i。另给你一个二维整数数组 queries ,其中 queries[i] = [li, ri]。现在 left[right[l]]>l 且 left[right[l]−1]≤l。也可以找最小的 j,满足 left[j]>l,这不会影响计算出的合法子串个数。我们找的是最小的 j,满足 left[j]≥l。字符串中 0 的数量最多为 k。字符串中 1 的数量最多为 k。

2024-11-13 10:47:40 472

原创 3258. 统计满足 K 约束的子字符串数量 I

由于随着 i 的变大,窗口内的字符数量变多,越不能满足题目要求,所以最小左端点会随着 i 的增大而增大,有单调性,因此可以用 滑动窗口 计算。那么以 i 为右端点的合法子串,其左端点可以是 left ileft i+1,…计算以 0 为右端点的合法子串个数,以 1 为右端点的合法子串个数,……返回一个整数,表示 s 的所有满足 k 约束的子字符串的数量。我们需要知道以 i 为右端点的合法子串,其左端点最小是多少。设以 i 为右端点的合法子串,其左端点最小是 left i。字符串中 1 的数量最多为 k。

2024-11-12 16:16:42 485

原创 1547. 切棍子的最小成本

每次切割的成本都是当前要切割的棍子的长度,切棍子的总成本是历次切割成本的总和。对棍子进行切割将会把一根木棍分成两根较小的木棍(这两根木棍的长度和就是切割前木棍的长度)。如果一个状态不是第一次遇到(memo 中保存的结果不等于 memo 的初始值),那么可以直接返回 memo 中保存的结果。有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置。如果一个状态(递归入参)是第一次遇到,那么可以在返回前,把状态及其结果记到一个 memo 数组中。你可以按顺序完成切割,也可以根据需要更改切割的顺序。

2024-11-11 18:31:28 616

原创 540. 有序数组中的单一元素

给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。如果 nums[2k]=nums[2k+1],说明只出现一次的数的下标 >2k。第一个条件意味着,出现两次的数,必然相邻,不可能出现 1,2,1 这样的顺序。=nums[2k+1],说明只出现一次的数的下标 ≤2k。=nums[2k+1] 越可能满足,有单调性,可以二分。这也意味着,只出现一次的那个数,一定位于偶数下标上。也就是说,随着 k 的变大,不等式 nums[2k]除了一个数出现一次外,其余每个数都出现两次。

2024-11-10 09:57:24 553

原创 3242. 设计相邻元素求和服务

用一个大小为 n2×2 的数组 s 预处理元素和,其中 s[v][0] 为 adjacentSum(v) 的结果,s[v][1] 为 diagonalSum(v) 的结果。int diagonalSum(int value) 返回在 grid 中与 value 对角线相邻的元素之和,对角线相邻指的是与 value 在左上、右上、左下或右下的元素。int adjacentSum(int value) 返回在 grid 中与 value 相邻的元素之和,相邻指的是与 value 在上、左、右或下的元素。

2024-11-09 17:01:03 542

原创 3235. 判断矩形的两个角落是否可达

如果可以从矩形【上边界/左边界】通过桥到达矩形【右边界/下边界】,则说明路被堵死,无法从矩形左下角移动到矩形右上角。你需要判断是否存在一条从左下角到右上角的路径满足:路径 完全 在矩形内部,不会 触碰或者经过 任何 圆的内部和边界,同时 只 在起点和终点接触到矩形。如果从与【上边界/左边界】相交的节点出发,DFS 这张图,到达与【右边界/下边界】相交的节点,则说明无法从矩形左下角移动到矩形右上角。如果从矩形【上边界/左边界】到矩形【右边界/下边界】的路被圆堵死,则无法从矩形左下角移动到矩形右上角。

2024-11-08 13:17:06 718

原创 3255. 长度为 K 的子数组的能量值 II

请你返回一个长度为 n - k + 1 的整数数组 results ,其中 results[i] 是子数组 nums[i…如果发现 cnt≥k,那么下标从 i−k+1 到 i 的这个子数组的能量值为 nums[i],即 ans[i−k+1]=nums[i]。如果段长至少是 k,那么这段中的所有长为 k 的子数组都是符合要求的,子数组的最后一个元素是最大的。如果 i=0 或者 nums[i]=nums[i−1]+1,把 cnt 增加 1;你需要求出 nums 中所有长度为 k 的子数组的能量值。

2024-11-07 10:56:26 708

原创 3254. 长度为 K 的子数组的能量值I

请你返回一个长度为 n - k + 1 的整数数组 results ,其中 results[i] 是子数组 nums[i…(i + k - 1)] 的能量值。如果 所有 元素都是依次 连续 且 上升 的,那么能量值为 最大 的元素。给你一个长度为 n 的整数数组 nums 和一个正整数 k。你需要求出 nums 中所有长度为 k 的 子数组的能量值。

2024-11-06 11:50:13 430

原创 3222. 求出硬币游戏的赢家

Alice 和 Bob 正在玩一个游戏。每一轮中,Alice 先进行操作,Bob 后操作。每次操作中,玩家需要拿出价值 总和 为 115 的硬币。如果一名玩家无法执行此操作,那么这名玩家 输掉 游戏。给你两个 正 整数 x 和 y ,分别表示价值为 75 和 10 的硬币的数目。两名玩家都采取 最优 策略,请你返回游戏的赢家。

2024-11-05 11:49:53 422

原创 633.平方数之和

【代码】633.平方数之和。

2024-11-04 11:12:56 534

原创 638.大礼包

就像人拥有记忆一样,我们在先A后B的路径下已经算出了 f (2, 1, 0) =7, f (5, 2, 2) =21,那么在后续的路径中,一旦要用到 f (2, 1, 0) 和 f (5, 2, 2) 就能直接拿到结果而不用重复计算。还有一个数组 special 表示大礼包,special[i] 的长度为 n + 1 ,其中 special[i][j] 表示第 i 个大礼包中内含第 j 件物品的数量,且 special[i][n] (也就是数组中的最后一个整数)为第 i 个大礼包的价格。

2024-11-03 17:09:39 1491

原创 3226. 使两个整数相等的位更改次数

你可以选择 n 的 二进制表示 中任意一个值为 1 的位,并将其改为 0。返回使得 n 等于 k 所需要的更改次数。如果无法实现,返回 -1。给你两个正整数 n 和 k。

2024-11-02 12:42:49 564

原创 3259. 超级饮料的最大强化能量

首先定义dp[i][j],j为0或1对应饮料A和B,含义为第i次选择饮料j能获得的最大能量。因为切换饮料是需要cd一回合的,所以当前选择了饮料A那么他的前一步可能来自第i - 1步选择A饮料,或者是i - 2步选择B饮料,当前选择了饮料B那么他的前一步可能来自第i - 1步选择B饮料,或者是i - 2步选择A饮料。由此易得状态转移方程为。我们共有 O(n) 个状态,每个状态的转移复杂度为 O(1),因此总的时间复杂度为 O(n)。最后答案为max(dp[n - 1][0], dp[n - 1][1])

2024-11-01 18:41:43 591

原创 不包含相邻元素的子序列的最大和

如果左侧是 (0,0),那么右侧是 (1,0)(这里右侧是 (0,0) 也可以,但某个边界没有任何要求的答案,一定不会差于该边界一定没有被选择的答案,因此 (1,0) 可行时就可以忽略 (0,0),后续类似的情况不重复进行解释);如果左侧是 (0,1),那么右侧是 (0,0)。y 表示右边界的选择情况;同理考虑剩余的三种情况,可以得到所有的结果(0,0)=max{L(0,0)+R(1,0),L(0,1)+R(0,0)}tl,r(1,1)=max{L(1,0)+R(1,1),L(1,1)+R(0,1)}

2024-10-31 11:09:21 2031

原创 3216. 交换后字典序最小的字符串

如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性相同,而 6 和 9 奇偶性不同。给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的字典序最小的字符串。

2024-10-30 11:15:32 447

原创 3211. 生成不含相邻零的二进制字符串

如果一个二进制字符串 x 的所有长度为 2 的子字符串中包含 至少 一个 “1”,则称 x 是一个 有效 字符串。返回所有长度为 n 的 有效 字符串,可以以任意顺序排列。给你一个正整数 n。

2024-10-29 11:07:05 447

原创 冗余连接II

输入一个有向图,该图由一个有着 n 个节点(节点值不重复,从 1 到 n)的树及一条附加的有向边构成。附加的边包含在 1 到 n 中的两个不同顶点间,这条附加的边不属于树中已存在的边。每个元素是一对 [ui, vi],用以表示 有向 图中连接顶点 ui 和顶点 vi 的边,其中 ui 是 vi 的一个父节点。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。返回一条能删除的边,使得剩下的图是有 n 个节点的有根树。

2024-10-28 11:53:35 610

原创 684 冗余连接

find_Root(root, parents) 函数用于查找节点的根节点,采用路径压缩优化,从而加快后续查找操作。若两个节点的根节点不同,则按秩合并。将深度较小的树的根节点指向较深的根节点,以保持并查集的平衡。若 x 和 y 的根节点相同,则表示有环存在,当前边即为多余的边,记录到 ans 并返回。heigh 数组:记录每个节点的树高度(秩),用于在合并操作中按秩优化。若高度相同,将一个根节点指向另一个,并增加合并后根节点的深度。若两个节点的根节点相同,则表示合并失败,当前边为多余的边。

2024-10-27 13:29:54 522

原创 执行操作可获得的最大总奖励II

如果 rewardValues[i] 大于 你当前的总奖励 x,则将 rewardValues[i] 加到 x 上(即 x = x + rewardValues[i]),并 标记 下标 i。f |= f > (shift - v):此操作将 f 中的高位清零(因为总奖励不能超过当前状态),然后更新了所有可能的累积奖励。从最大可能奖励值(rewardValues.back() * 2 - 1)开始递减,找到 f 中的最高位置 i,它代表了能获得的最大可能累积奖励。

2024-10-26 16:02:38 425

原创 执行操作可获得的最大总奖励

给你一个整数数组 rewardValues,长度为 n,代表奖励的值。最初,你的总奖励 x 为 0,所有下标都是 未标记 的。你可以执行以下操作 任意次 :从区间 [0, n - 1] 中选择一个 未标记 的下标 i。如果 rewardValues[i] 大于 你当前的总奖励 x,则将 rewardValues[i] 加到 x 上(即 x = x + rewardValues[i]),并 标记 下标 i。以整数形式返回执行最优操作能够获得的 最大 总奖励。

2024-10-25 13:29:29 521

原创 力扣每日一题

给定一个技能等级互不相同的玩家数组 skills 和正整数 k,玩家按顺序进行比赛。每场比赛中,技能更高的玩家获胜,并保持在队列前端,失败者则排到末尾。目标是找到第一位连续赢下 k 场比赛的玩家。

2024-10-24 11:19:51 974 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除