
LeetCode
文章平均质量分 64
韭菜盖饭
一名自学爪哇的小学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode每日一题3261---统计满足 K 约束的子字符串数量 II
对于查询 [0, 6], s[0…6] = “0001111” 的所有子字符串中,除 s[0…相似,就是需要处理多个子串,完全可以利用上一次的函数进行求解,但是由于这次的字符串长度太大,会导致超出时间限制,因此需要特殊的方法处理,可以使用。输入:s = “010101”, k = 1, queries = [[0,5],[1,4],[2,3]]输入:s = “0001111”, k = 2, queries = [[0,6]]s 的所有子字符串中,长度大于 3 的子字符串都不满足 k 约束。原创 2024-11-13 10:46:04 · 603 阅读 · 1 评论 -
LeetCode每日一题3258---统计满足 K 约束的子字符串数量 I
s 的所有子字符串中,除了 “1010”、“10101” 和 “0101” 外,其余子字符串都满足 k 约束。,并确保窗口内的 ‘1’ 和 ‘0’ 的数量都不超过 k。s 的所有子字符串中,除了长度大于 5 的子字符串外,其余子字符串都满足 k 约束。返回一个整数,表示 s 的所有满足 k 约束 的。输入:s = “10101”, k = 1。输入:s = “11111”, k = 1。s 的所有子字符串都满足 k 约束。字符串中 0 的数量最多为 k。字符串中 1 的数量最多为 k。原创 2024-11-12 11:55:02 · 351 阅读 · 0 评论 -
LeetCode每日一题1547---切棍子的最小成本
第二次切割长度为 6 的棍子(即第一次切割得到的第二根棍子),第三次切割为长度 4 的棍子,最后切割长度为 3 的棍子。每次切割的成本都是当前要切割的棍子的长度,切棍子的总成本是历次切割成本的总和。在具体实现时,由于需要先计算子段的值,也就意味着需要优先计算下标跨度较小的f,于是可以先从小到大枚举下标跨度l,然后枚举左边界i,通过i + l - 1计算出右边界j。总成本 <= 25 的切割顺序很多,例如,[4, 6, 5, 2, 1] 的总成本 = 22,是所有可能方案中成本最小的。经典的动态规划问题。原创 2024-11-11 11:31:31 · 549 阅读 · 0 评论 -
LeetCode每日一题540---有序数组中的单一元素
的数也是单独的,这和题目相悖,那么这个数可以在下标为3的位置么,同样也不行,因为下标为。个数无法组成两对一样的数,这也与题目相悖,一次类推,单独出现的数也不能在下标为。的位置,也就是说这个单独的数的下标一定是偶数,所以我们可以从头到尾,步长为。这道题目有一定的规律性,我们可以按照规律性进行解题,假设数组的大小为。个位置的,显然是不可以的, 因为如果这个单独出现的数在下标为。输入: nums = [1,1,2,3,3,4,4,8,8]输入: nums = [3,3,7,7,10,11,11]原创 2024-11-10 10:55:16 · 359 阅读 · 0 评论 -
LeetCode每日一题3242---设计相邻元素求和服务
int diagonalSum(int value) 返回在 grid 中与 value 对角线相邻的元素之和,对角线相邻指的是与 value 在左上、右上、左下或右下的元素。int adjacentSum(int value) 返回在 grid 中与 value 相邻的元素之和,相邻指的是与 value 在上、左、右或下的元素。这道题目最容易想到的解题思路是先通过value找到在grid的位置,然后利用相邻元素位置的规律和对角线相邻元素位置的规律,获取相邻元素的值。4 的相邻元素是 1、3、5 和 7。原创 2024-11-09 10:28:26 · 427 阅读 · 0 评论 -
LeetCode每日一题3235---判断矩形的两个角落是否可达
2、若矩形边的两个端点都在圆的外部,那么就需要从圆心向矩形边所在的直线做一条垂线,这条垂线的长度必须要小于等于半径的长度,同时矩形边的两个端点必须位于这条垂线的两侧。由于题目中矩形的边都是水平或者竖直的,因此矩形边的两个端点必然在某个维度上是一样的,这个维度的值与圆心在这个维度值之差就是垂线的长度,而另一个维度的值只需分别处于圆心另一个维度值的两侧就行了。输入:X = 3, Y = 3, circles = [[2,1,1],[1,2,1]]不存在从 (0, 0) 到 (3, 3) 的路径。原创 2024-11-08 10:25:44 · 705 阅读 · 0 评论 -
LeetCode每日一题3255---3255. 长度为 K 的子数组的能量值 II
这道题目与昨天的题目一样,不同的是nums[i] 的数据量变得很大,但依旧可以使用下面的方法求解。输入:nums = [1,2,3,4,3,2,5], k = 3。输入:nums = [3,2,3,2,3,2], k = 2。输入:nums = [2,2,2,2,2], k = 4。[3, 4, 3] 中元素 不是 连续的。[4, 3, 2] 中元素 不是 上升的。[3, 2, 5] 中元素 不是 连续的。[1, 2, 3] 中最大元素为 3。输出:[3,4,-1,-1,-1]原创 2024-11-07 10:48:59 · 333 阅读 · 1 评论 -
LeetCode每日一题3254---长度为 K 的子数组的能量值 I
输入:nums = [1,2,3,4,3,2,5], k = 3。输入:nums = [3,2,3,2,3,2], k = 2。输入:nums = [2,2,2,2,2], k = 4。[3, 4, 3] 中元素 不是 连续的。[4, 3, 2] 中元素 不是 上升的。[3, 2, 5] 中元素 不是 连续的。[1, 2, 3] 中最大元素为 3。[2, 3, 4] 中最大元素为 4。的,那么能量值为 最大 的元素。输出:[3,4,-1,-1,-1]输出:[-1,3,-1,3,-1]原创 2024-11-06 10:46:33 · 444 阅读 · 0 评论 -
LeetCode每日一题3222---求出硬币游戏的赢家
这道题目比较简单,每一个人要想赢得胜利,必须拿到1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币,因此我们可以在拿过硬币后,判断硬币的数量来终止游戏,并且查看谁是最后一个拿硬币的,则就是赢家。给你两个 正 整数 x 和 y ,分别表示价值为 75 和 10 的硬币的数目。Alice 拿走 1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币。Alice 拿走 1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币。Bob 拿走 1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币。原创 2024-11-05 09:45:53 · 214 阅读 · 0 评论 -
LeetCode每日一题633---平方数之和
如果存在符合条件的a,b,那么a和b一定在0和。然后看得到的b是否为整数 则符合条件。解释:1 * 1 + 2 * 2 = 5。最朴素的思路,就是先令a从0遍历到。需要注意的是,a的终止条件最好是。,你要判断是否存在两个整数。另一种时间复杂度低的方式是。原创 2024-11-04 10:20:54 · 295 阅读 · 0 评论 -
LeetCode每日一题638---大礼包
输入:price = [2,3,4], special = [[1,1,0,4],[2,2,1,9]], needs = [1,2,1]需要买 1A ,2B 和 1C ,所以付 ¥4 买 1A 和 1B(大礼包 1),以及 ¥3 购买 1B , ¥4 购买 1C。输入:price = [2,5], special = [[3,0,5],[1,2,10]], needs = [3,2]需要购买 3 个 A 和 2 个 B , 所以付 ¥10 购买 1A 和 2B(大礼包 2),以及 ¥4 购买 2A。原创 2024-11-03 15:50:51 · 848 阅读 · 0 评论 -
LeetCode每日一题3226---使两个整数相等的位更改次数
如果 k 是 n 的子集,答案为从 n 中去掉 k 后的集合大小,即 n⊕k 的二进制中的 1 的个数。最初,n 和 k 的二进制表示分别为 n = (1101)2 和 k = (0100)2,如果 k 的二进制表示中有比 n 中的 1 位置多的 1,则无法实现,将返回 -1。如果 k 的某一位是 1,而 n 的对应位是 0,则返回 -1,因为无法实现该转换。我们需要将整数 n 的二进制表示变成 k,并且只能将 n 中的 1 改为 0。否则,统计 n 和 k 中 1 的不同位置,计算最少的更改次数。原创 2024-11-02 21:14:14 · 314 阅读 · 0 评论 -
LeetCode每日一题3259---超级饮料的最大强化能量
来自未来的体育科学家给你两个整数数组 和 ,数组长度都等于 。这两个数组分别代表 两种不同能量饮料每小时所能提供的强化能量。你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而,如果从一种能量饮料切换到另一种,你需要等待一小时来梳理身体的能量体系(在那个小时里你将不会获得任何强化能量)。返回在接下来的 小时内你能获得的 最大 总强化能量。注意 你可以选择从饮用任意一种能量饮料开始。示例 1:输入:energyDrinkA = [1,3,1], energyDrinkB = [3,1,1]输出:原创 2024-11-01 15:00:24 · 477 阅读 · 0 评论 -
LeetCode每日一题3165---不包含相邻元素的子序列的最大和
执行第 1 个查询后,nums = [3,-2,9],不包含相邻元素的子序列的最大和为 3 + 9 = 12。执行第 1 个查询后,nums = [-5,-1],不包含相邻元素的子序列的最大和为 0(选择空子序列)。执行第 2 个查询后,nums = [-3,-2,9],不包含相邻元素的子序列的最大和为 9。输入:nums = [3,5,9], queries = [[1,-2],[0,-3]]我们定义 dp[i] 为考虑前 i 个元素时,不包含相邻元素的子序列的最大和。是选择当前元素后的最大和。原创 2024-10-31 12:25:02 · 488 阅读 · 0 评论 -
LeetCode每日一题3216---交换后字典序最小的字符串
如果字符串数组长度为n,则这道题的最优解的时间复杂度O(N*logN).实质是一种排序的实现,排序的结果就是拼接的顺序。s[1] == ‘5’ 和 s[2] == ‘3’ 都具有相同的奇偶性,交换它们可以得到字典序最小的字符串。给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的。strs=[“b”,“ba”]. 可以拼成“bba”和“bab”,后者字典序小,返回后者“bab”找到第一个 s[i] > s[i + 1],且它们奇偶性相同,交换它们。原创 2024-10-30 09:52:34 · 252 阅读 · 0 评论 -
LeetCode每日一题3211---生成不含相邻零的二进制字符串
的有效字符串时,我们可以判断这个字符串是否符合要求,如果符合要求则将该字符串添加到结果列表中。的 有效 字符串,可以以任意顺序排列。但这道题目还有速度更快的解法,字符串的每个位置都需要填入。这里我才用最简单的解法。是一个 有效 字符串。如果一个二进制字符串。中包含 至少 一个 “本题的目标就是找长度为。进制数,其中不能有两个。原创 2024-10-29 11:36:54 · 366 阅读 · 0 评论 -
LeetCode每日一题685---冗余连接 II
一定是删除指向入度为2的节点的两条边其中的一条,如果删了一条,判断这个图是一个树,那么这条边就是答案,同时注意要从后向前遍历,因为如果两天边删哪一条都可以成为树,就删最后那一条。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。输入:edges = [[1,2],[2,3],[3,4],[4,1],[1,5]],明确没有入度为2的情况,那么一定有向环,找到构成环的边就是要删除的边。输入:edges = [[1,2],[1,3],[2,3]]返回一条能删除的边,使得剩下的图是有。原创 2024-10-28 12:01:38 · 516 阅读 · 0 评论 -
LeetCode每日一题684---冗余连接
可以为每一个结点设置唯一的父亲结点,如果两个结点的父节点相同则表示这两个结点已经连通了。输入: edges = [[1,2], [2,3], [3,4], [1,4], [1,5]]这条代码可以保存最终的父节点信息 ,这样就可以省去中间父结点的查找。中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为。输入: edges = [[1,2], [1,3], [2,3]]请找出一条可以删去的边,删除后可使得剩余部分是一个有着。) 的树中添加一条边后的图。树可以看成是一个连通且 无环 的 无向 图。原创 2024-10-27 11:36:13 · 588 阅读 · 0 评论 -
LeetCode每日一题3181---执行操作可获得的最大总奖励 II
依次标记下标 0 和 2,总奖励为 4,这是可获得的最大值。,所有下标都是 未标记 的。以整数形式返回执行最优操作能够获得的 最大 总奖励。其中的思路:使用位运算来表示哪些数应该选,只需要通过。的区别是 数组会特别的大,因此本体不能再用。中的思想,只不过需要用位运算进行替代。做与或运算我们就可以找到每一个状态。中选择一个 未标记 的下标。大于 你当前的总奖励。,这是可获得的最大值。原创 2024-10-26 11:40:11 · 313 阅读 · 0 评论 -
LeetCode每日一题3180---执行操作可获得的最大总奖励 I
但是我们要找到最大的总奖励,所以我们需要遍历整个数组 来进行比较,依次标记下标 0 和 2,总奖励为 4,这是可获得的最大值。,所有下标都是 未标记 的。问题,所有的数要么选要么不选,可以用到动态规划的方法来做。以整数形式返回执行最优操作能够获得的 最大 总奖励。状态下的最大总奖励,为了防止重复计算。首先需要对数组进行从小到大的排序。中选择一个 未标记 的下标。这里我们采用递归的方法来做。时,可以获得的最大总奖励。大于 你当前的总奖励。,这是可获得的最大值。函数的作用是当奖励值为。原创 2024-10-25 16:21:54 · 371 阅读 · 0 评论 -
LeetCode每日一题3175---找到连续赢 K 场比赛的第一位玩家
大于数组的长度,那么在这个数组中只有值最大的下标才符合条件的,因为值最大的才可以循环大于每一个数值,次数才能超过数组长度,也就是。对于第一种情况,我们就直接找第一个符合条件的数值下标即可,对于第二种情况,如果。队列中最前面两名玩家进行一场比赛,技能等级 更高 的玩家胜出。比赛后,获胜者保持在队列的开头,而失败者排到队列的末尾。位玩家在进行比赛,玩家编号依次为。场比赛,所以赢家是玩家 2。请你返回这个比赛的赢家编号。场比赛,所以赢家是玩家。一开始,队列里的玩家为。一开始,队列里的玩家为。原创 2024-10-24 11:03:03 · 437 阅读 · 0 评论 -
LeetCode每日一题3185---构成整天的下标对数目 II
那么要使 hours[i] + hours[j] 为 24,hours[j] % 24 应该等于 14(因为 10 + 14 = 24)。,那么要使 hours[i] + hours[j] 为 24,hours[j] % 24 应该等于 19(因为 5 + 19 = 24)。如果我们能够找到两个数的余数之和为 24 或者能被 24 整除,那么这两个数的和也就能够被 24 整除。例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推。,它的作用类似于哈希表,记录每个模。原创 2024-10-23 11:33:06 · 457 阅读 · 0 评论