📅  最后修改于: 2023-12-03 15:36:52.235000             🧑  作者: Mango
有一个长度为n的非负整数数组,每一个元素均不大于20000。数组中的元素和为S(S <= 100000)。
现在,你可以删掉数组中的一个元素。问,最少需要增加多少元素,使得数组中的所有元素的和相等。
首先计算数组中所有元素的和sum,然后我们遍历每个元素num,将其删除并判断数组的和是否等于(sum - num) * 2。如果相等,则说明我们删去的这个元素可满足条件,直接返回0;如果不相等,则说明需要增加 (sum - num) - sum / 2 的元素来满足条件。
实现代码如下:
def min_increment_to_equal_array(arr):
sum = 0
for num in arr:
sum += num
for num in arr:
if (sum - num) * 2 == sum:
return 0
return (sum - num) - sum // 2
assert min_increment_to_equal_array([1,2,3,4,5]) == 1
assert min_increment_to_equal_array([1,2,2,3,3,4]) == 0
assert min_increment_to_equal_array([1,2,3,4,5,6]) == 3
以上代码片段使用了Markdown格式进行排版,方便读者查看和理解解题思路和代码实现。