📅  最后修改于: 2023-12-03 15:11:40.295000             🧑  作者: Mango
给定一个整数数组 nums
和一个整数 K
,请你找出该数组中可以被 K
整除的非空子数组最大总和。
输入: nums = [4,5,0,-2,-3,1], K = 5
输出: 9
解释: 子数组 [5,0,-2,-3] 可以被 K = 5 整除,且和为 5 0 -2 -3 = 0。
def max_subarray_sum(nums, K):
res = cur_sum = 0
sums = [0] * (len(nums) + 1)
for i in range(1, len(nums) + 1):
cur_sum += nums[i - 1]
sums[i] = cur_sum
for i in range(len(sums)):
for j in range(i + 1, len(nums) + 1):
if (sums[j] - sums[i]) % K == 0:
res = max(res, sums[j] - sums[i])
return res
本题主要考察对前缀和的理解,以及如何巧妙地运用前缀和数组来解决问题。