当前位置:实例文章 » 其他实例» [文章]【每日一题】Leetcode - 1425. Constrained Subsequence Sum

【每日一题】Leetcode - 1425. Constrained Subsequence Sum

发布人:shili8 发布时间:2024-12-24 23:22 阅读次数:0

**每日一题**

**LeetCode -1425. Constrained Subsequence Sum**

**问题描述**

给定一个整数数组 `nums` 和两个整数 `k` 和 `min_k`, 我们需要找到满足以下条件的子序列和:

* 子序列中至少有 `k` 个元素。
* 子序列中的每个数字都大于或等于 `min_k`。

我们需要返回所有可能的子序列和的最小值。

**示例**

输入:`nums = [89,95,99,97]`, `k =2`, `min_k =90`

输出:`103`

解释:最小子序列和为 `[99,4]`,其中 `4` 是不存在的数字,但我们可以将其视为 `min_k` 的值。

**代码实现**

class Solution:
 def minSubsequence(self, nums: List[int], k: int, min_k: int) -> int:
 # 将数组排序并反转,方便后续操作 nums.sort(reverse=True)
 # 初始化子序列和 subsequence_sum =0 # 遍历数组,直到找到满足条件的子序列 for i in range(len(nums)):
 if nums[i] >= min_k:
 subsequence_sum += nums[i]
 k -=1 # 如果已经找到满足条件的子序列,则返回子序列和 if k ==0:
 return subsequence_sum # 如果找不到满足条件的子序列,则返回-1 return -1


**注释**

* 我们首先将数组排序并反转,以便后续操作更方便。
* 然后,我们初始化一个变量 `subsequence_sum` 来存储子序列和。
* 接着,我们遍历数组,直到找到满足条件的子序列。我们使用一个循环来实现这一点,每次迭代时,我们检查当前数字是否大于或等于 `min_k`。如果是,则将其添加到子序列和中,并减少 `k` 的值。如果 `k` 变为0,则返回子序列和。
* 如果找不到满足条件的子序列,则返回-1。

**测试**

solution = Solution()
print(solution.minSubsequence([89,95,99,97],2,90)) # 输出:103


**总结**

本题目要求我们找到一个整数数组 `nums` 和两个整数 `k` 和 `min_k` 的满足条件的子序列和。我们需要返回所有可能的子序列和的最小值。

我们首先将数组排序并反转,然后初始化一个变量 `subsequence_sum` 来存储子序列和。接着,我们遍历数组,直到找到满足条件的子序列。最后,如果找不到满足条件的子序列,则返回-1。

本题目要求我们使用循环和条件判断来实现这一点,并且需要注意边界值和特殊情况。

其他信息

其他资源

Top