检查是否可以在 Python 中以相等的总和划分 k 个子数组
假设我们有一个名为nums的数字数组,并且还有另一个值K。我们必须检查是否可以将数组nums划分为K个连续的子数组,使得每个子数组的元素和相等。
因此,如果输入类似于nums=[2,5,3,4,7]k=3,那么输出将为True,因为我们可以进行三个分区,如[(2,5),(3,4),(7)]都有相等的和7。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums, k):
n = len(nums)
cumul_sum = [0 for i in range(n)]
cumul_sum[0] = nums[0]
for i in range(1, n):
cumul_sum[i] = cumul_sum[i - 1] + nums[i]
total_sum = cumul_sum[n - 1]
if total_sum % k != 0:
return False
count = 0
pos = -1
for i in range(n):
if pos == -1:
sub = 0
else:
sub = cumul_sum[pos]
if cumul_sum[i] - sub == total_sum / k:
pos = i
count += 1
elif cumul_sum[i] - cumul_sum[pos] > total_sum / k:
break
return count == k
nums = [2, 5, 3, 4, 7]
k = 3
print(solve(nums, k))输入
[2, 5, 3, 4, 7], 3输出结果
True
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短