- 博客(20)
- 收藏
- 关注
原创 切棍子的最小成本
每次切割的成本都是当前要切割的棍子的长度,切棍子的总成本是历次切割成本的总和。对棍子进行切割将会把一根木棍分成两根较小的木棍(这两根木棍的长度和就是切割前木棍的长度)。请参阅第一个示例以获得更直观的解释。你可以按顺序完成切割,也可以根据需要更改切割的顺序。表示你需要将棍子切开的位置。个单位的木棍,棍上从。
2024-11-11 20:53:36
268
原创 有序数组中的单一元素
对于下标 x 左边的下标 y,如果 nums[y]=nums[y+1],则 y 一定是偶数;对于下标 x 右边的下标 z,如果 nums[z]=nums[z+1],则 z 一定是奇数。如果上述比较相邻元素的结果是相等,则 mid<x,调整左边界,否则 mid≥x,调整右边界。假设只出现一次的元素位于下标 x,由于其余每个元素都出现两次,因此下标 x 的左边和右边都有偶数个元素,数组的长度是奇数。因此在二分查找的过程中,不需要判断 mid 的奇偶性,mid 和 mid⊕1 即为每次需要比较元素的两个下标。
2024-11-10 20:00:53
293
原创 判断两个矩形是否可达
你需要判断是否存在一条从左下角到右上角的路径满足:路径。坐标平面内有一个左下角在原点,右上角在。如果存在这样的路径,请你返回。在起点和终点接触到矩形。圆的内部和边界,同时。
2024-11-08 19:30:08
739
原创 3255. 长度为 K 的子数组的能量值 II
在计算的同时,此时如果以 nums[i] 为结尾的连续上升的元素数组如果大于等于 k,则当前一定存在长度为 k 且以 nums[i] 为结尾的连续上升的子数组,此时能量值即为 nums[i];如果满足 i=0 或者 nums[i]−nums[i−1]=1 时,此时 cnt=cnt+1,即在 nums[i−1] 末尾可以追加元素 nums[i] 仍然满足连续上升;nums[i]−nums[i−1]不等于1 时,此时 cnt 重新置为 1,即在 nums[i−1] 末尾无法追加 nums[i];
2024-11-07 20:52:44
314
原创 3254给你一个长度为 n 的整数数组 nums 和一个正整数 k
需要找到长度为 k 且满足连续上升的子数组中的最大元素,此时直接枚举数组中所有长度为 k 的子数组,并判断该数组是否满足连续且上升即可。子数组满足连续上升,此时子数组中相邻元素的差值一定为 1,即满足 nums[j]−nums[j−1]=1。如果子数组满足连续上升,此时最大值即为子数组中的最后一个元素,能量值即为子数组的最后一个元素;如果不满足,则此时能量值为 −1,按照上述描述依次枚举并返回能量值即可。的 子数组 的能量值。
2024-11-06 12:30:26
382
原创 3222.求出硬币游戏的赢家
因此,价值 75 的硬币可以被操作 x 次,价值为 10 的硬币可以被操作 ⌊ 4/y ⌋ 次,其中 ⌊⋅⌋ 表示向下取整。最多可以进行的操作次数为二者的较小值:如果其为奇数,那么最后一次操作的(即获胜的玩家)是 Alice,否则是 Bob。价值总和为 115 的硬币只能由 115=75+10+10+10+10 组成,每一名玩家需要拿走 1 枚价值 75 的硬币以及 4 枚价值 10 的硬币。每一轮中,Alice 先进行操作,Bob 后操作。,分别表示价值为 75 和 10 的硬币的数目。
2024-11-05 18:41:40
220
原创 平方数之和
在枚举 a 的同时,使用 sqrt 函数找出 b。在计算的过程中可能会发生 int 型溢出的情况,需要使用 long 型避免溢出。,你要判断是否存在两个整数。
2024-11-04 10:07:28
182
原创 638. 大礼包
因此,我们使用记忆化搜索而不是完全遍历的方法,来计算出满足每个购物清单 needs 所需花费的最低价格。计算购买大礼包 cur_special 后新的购物清单 nxt_needs,并递归地计算满足购物清单 nxt_needs 所需花费的最低价格 nxt_price;计算满足当前购物清单 cur_needs 所需花费的最低价格 cur_price=special_price+nxt_price;每件物品都有对应的价格。将 min_price 初始化为原价购买购物清单 cur_needs 中的所有物品的花费;
2024-11-03 21:59:06
680
原创 3259. 超级饮料的最大强化能量
可以发现每次取数所得的和只与前面一步怎么决策有关,如果上一步切换,那么计算和的时候从上两步计算,否则从上一步计算,因此我们设计 d[i][0/1] 分别表示第 i 步从 A 或者从 B 取数时,可以获得的最大值。然而,如果从一种能量饮料切换到另一种,你需要等待一小时来梳理身体的能量体系(在那个小时里你将不会获得任何强化能量)。这两个数组分别代表 A、B 两种不同能量饮料每小时所能提供的强化能量。最终选择 max(d[n][0],d[n][1]) 作为答案。你可以选择从饮用任意一种能量饮料开始。
2024-11-01 21:45:31
309
原创 3165. 不包含相邻元素的子序列的最大和
分别考虑 (x,y) 的四种情况,以 (x,y)=(0,0) 为例,左侧只能是 (0,0) 或 (0,1)。如果左侧是 (0,0),那么右侧是 (1,0)(这里右侧是 (0,0) 也可以,但某个边界没有任何要求的答案,一定不会差于该边界一定没有被选择的答案,因此 (1,0) 可行时就可以忽略 (0,0),后续类似的情况不重复进行解释);接下来我们考虑如何计算这四个值。的四个值,因此使用单点修改的线段树,就可以在 O(logn) 的时间处理每一次修改操作,随后 O(1) 的时间通过根节点得到修改后的答案。
2024-10-31 15:34:03
529
原创 3211给你一个正整数 n。如果一个二进制字符串 x 的所有长度为 2 的子字符串中包含 至少 一个 “1“,则称 x 是一个 有效 字符串。返回所有长度为 n 的 有效 字符串,可以以任意顺序排
当前处理位置为为首或者前一位为1时可以填入0;填入1没有任何限制;
2024-10-29 10:25:19
145
原创 685本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。
如果出现环了,出现环的这条就是要删除的 if (merge(edges[i], parents, size) == false) { res[0] = edges[first][0];
2024-10-28 18:46:43
358
原创 684. 冗余连接树:树可以看成是一个连通且 无环 的 无向 图。给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树
/= i) {if (rootX!= rootY) {} else {i++) {i++) {break;free(rank);
2024-10-27 10:45:29
660
原创 3181给你一个整数数组 rewardValues,长度为 n,代表奖励的值。最初,你的总奖励 x 为 0,所有下标都是 未标记 的。你可以执行以下操作 任意次 :从区间 [0, n - 1] 中选择
和昨天题目一样,但是用昨天的代码有少部分测试用例会超时。
2024-10-26 21:46:54
331
原创 执行操作可获得的最大奖励
/ 总奖励不会超过rewardValues[n - 1] * 2 - 1。j++) { // j表示pre总奖励,需小于val,才能把当前val加入。典型的动态规划问题,开始用的是一维dp,后面报错,发现一维dp仅能得出按顺序选择的最大值,因此要在一维dp之前对数组进行一次排序。if (access[j]) { // 总奖励j可达, 则j + val可达。// 总奖励x初始值即为0,则0是可达的。总奖励为 11,这是可获得的最大值。依次标记下标 0 和 2,总奖励为 4,这是可获得的最大值。
2024-10-25 16:11:25
359
原创 找到连续赢k场比赛的第一名玩家
有 n 位玩家在进行比赛,玩家编号依次为 0 到 n - 1 。给你一个长度为 n 的整数数组 skills 和一个 正 整数 k ,其中 skills[i] 是第 i 位玩家的技能等级。skills 中所有整数 互不相同 。所有玩家从编号 0 到 n - 1 排成一列。比赛进行方式如下:队列中最前面两名玩家进行一场比赛,技能等级 更高 的玩家胜出。比赛后,获胜者保持在队列的开头,而失败者排到队列的末尾。这个比赛的赢家是 第一位连续 赢下 k 场比赛的玩家。请你返回这个比赛的赢家编号
2024-10-24 19:08:25
259
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人