【问题标题】:Minimum and maximum summation from array [duplicate]数组的最小和最大总和[重复]
【发布时间】: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)。

【问题讨论】:

  • newArrayarr 指向同一个列表。您需要复制链接问题中的内容。
  • 总是想要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:])

标签: python arrays algorithm


【解决方案1】:
def miniMaxSum(arr):
    arr = sorted(arr)
    minimum = sum(arr[:-1])
    maximum = sum(arr[1:])

    return minimum, maximum

如果您的目标是获取除一个之外的所有元素的最小和最大总和,您可以这样做。

【讨论】:

  • 是的,但我的数组可以像 arr = [2,5,3,1,4] 一样改变
  • 这就是你必须排序的原因
  • 好的,这很有用,但我也想了解是什么让我的代码错误。
  • 如果你追求的是知识,我建议:docs.python.org/3/library/copy.html
猜你喜欢
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多