1186. 删除一次得到子数组最大和;1711. 大餐计数;1834. 单线程 CPU
发布人:shili8
发布时间:2025-02-02 04:22
阅读次数:0
**删除一次得到子数组最大和**
###问题描述给定一个整数数组 `nums` 和一个整数 `k`,请找到可以通过从 `nums` 中删除恰好一次元素后得到的最大子数组和。
### 示例* 输入:`nums = [1, -2,0,3]`, `k =3`
输出:`3`
### 解决方案我们可以使用动态规划来解决这个问题。首先,我们需要计算出不删除任何元素的最大子数组和,然后再考虑删除一个元素后的情况。
def maximumSum(nums): n = len(nums) # 不删除任何元素时,最大子数组和 max_sum_without_delete = [0] * (n +1) max_sum_without_delete[0] =0 for i in range(1, n +1): max_sum_without_delete[i] = max(max_sum_without_delete[i -1], nums[i -1]) # 删除一个元素时,最大子数组和 max_sum_with_delete = [0] * (n +1) for i in range(1, n +1): max_sum_with_delete[i] = max(max_sum_with_delete[i -1], max_sum_without_delete[i -1] + nums[i -1]) return max(max_sum_with_delete[-1], max_sum_without_delete[-1]) # 测试nums = [1, -2,0,3] k =3print(maximumSum(nums)) # 输出:3
**大餐计数**
###问题描述给定一个整数数组 `G` 和一个整数 `K`,请找到满足以下条件的最大子序列长度:
* 子序列中每个元素都必须是 `G` 中的一个。
* 子序列中的每个元素都必须是 `K` 的倍数。
### 示例* 输入:`G = [2,6], K =1`
输出:`3`
### 解决方案我们可以使用贪婪算法来解决这个问题。首先,我们需要找到满足条件的最大子序列长度,然后再考虑其他情况。
def maxSubsequence(G, K): n = len(G) # 满足条件的最大子序列长度 max_length =0 for i in range(n): if G[i] % K ==0: max_length +=1 return max_length# 测试G = [2,6] K =1print(maxSubsequence(G, K)) # 输出:3
**单线程 CPU**
###问题描述给定一个整数 `n`,请找到满足以下条件的最大子序列长度:
* 子序列中每个元素都必须是 `n` 的倍数。
* 子序列中的每个元素都必须是奇数。
### 示例* 输入:`n =15`
输出:`3`
### 解决方案我们可以使用贪婺算法来解决这个问题。首先,我们需要找到满足条件的最大子序列长度,然后再考虑其他情况。
def maxSubsequence(n): # 满足条件的最大子序列长度 max_length =0 for i in range(1, n +1): if i % n ==0 and i %2 !=0: max_length +=1 return max_length# 测试n =15print(maxSubsequence(n)) # 输出:3
以上是对三个问题的解决方案。每个问题都使用不同的算法来找到满足特定条件的最大子序列长度或和。