【发布时间】:2020-10-28 12:08:55
【问题描述】:
我想为我的数组打印 5 个元素中的 4 个的最小和和最大和。当我逐步检查我的结果时,它似乎是正确的,但对于主要结果,我的答案是错误的。
def miniMaxSum(arr):
minimum = 10**9
maximum = 0
for i in arr:
newArray = arr
newArray.remove(i)
sumArray = 0
for e in newArray:
sumArray += e
if sumArray < minimum:
minimum = sumArray
if sumArray > maximum:
maximum = sumArray
return minimum, maximum
myArr = [1,2,3,4,5]
输出:(6, 14)
必须是 (10, 14)。
【问题讨论】:
-
newArray和arr指向同一个列表。您需要复制链接问题中的内容。 -
您总是想要
k+1元素中的最小或最大k的总和吗?如果是这样,你可以只做min_sum = sum(arr) - max(arr)和类似的max_sum -
是的,总是 k+1 个元素中的 k 个,复制数组已解决我的问题
-
def f(l): l.sort() 返回 sum(l[:-1]), sum(l[1:])