列表Python的最小和最大总和

新手上路,请多包涵

我一直在 HackerRank 上解决问题,以便踏上解决 Python 问题的大门,虽然我在解决一些问题时玩得很开心,但有一个问题难倒了我。

这个问题是 Mini-Max sum,它需要一个输入( arr );一个包含 5 个整数 的数组,并通过 miniMaxSum(arr) 在下一行的格式中打印 arr 中最大和最小的 4 个整数的总和

最大最小值

例如 miniMaxSum(1, 2, 3, 4, 5)

10 14

我做了一些你可以在下面找到的东西,并且 大多数例子 都返回了想要的结果,但我刚刚发现它不适用于 arr = (5, 5, 5, 5, 5 ).我怀疑这是因为当最大值与列表中的另一个值(例如 arr = 1、2、3、4、4)或最小值(例如 arr = 1、1、3、4、5)相同时,我的代码完全失败了,因为它不 依赖与 arr 的最大或最小值相同的任何东西。如果有帮助,HackerRank 错误消息是“ Wrong Answer ”。

批评并提出改进建议,以便它适用于 任何 5 个整数的数组(例如(5、5、5、5、5))。我很想了解这是如何工作的,非常感谢您的帮助。提前致谢!

 # Complete the miniMaxSum function below.
def miniMaxSum(arr):
    listmax = []
    listmin = []
    for number in arr:
        if number > min(arr):
            listmax.append(number)
    for number in arr:
        if number < max(arr):
            listmin.append(number)
    maxnum = sum(listmax)
    minnum = sum(listmin)
    print (minnum, maxnum)

原文由 John Carter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 331
1 个回答

由于这是一个非常小的列表,我只是对其进行排序,然后选择前 5 个,然后选择最后 5 个,然后分别计算它们的总和。

 def miniMaxSum(arr):
  arr_sorted = sorted(arr)
  return sum(arr_sorted[:4]), sum(arr_sorted[-4:])

print(miniMaxSum([1,2,3,4,5]))
print(miniMaxSum([5,5,5,5,5]))

输出:

 >>> print(miniMaxSum([1,2,3,4,5]))
(10, 14)
>>> print(miniMaxSum([5,5,5,5,5]))
(20, 20)

原文由 booleys1012 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题