You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求解5元素列表最小和与最大和时的代码错误排查

5元素列表最小和与最大和计算错误排查

问题背景

HackerRank习题要求:给定一个5元素列表,计算其最小和(去掉最大元素后4个元素的和)与最大和(去掉最小元素后4个元素的和)并输出。

测试情况:

  • 列表[1, 3, 5, 7, 9]:代码输出16和24,符合预期;
  • 列表[1,2,3,4,5]:输出10和14,结果正确;
  • 列表[7,69,2,221,8974]:预期结果为299和9271,但代码输出299和9266,出现错误。

我的代码

def miniMaxSum(arr):
    # Write your code here
    minSum = sum( arr[:-1])
    maxSum = sum( arr[1:])
    print(minSum,maxSum)

错误原因

代码逻辑存在问题:你默认用arr[:-1]取前4个元素的和作为最小和,arr[1:]取后4个元素的和作为最大和,但这只有在列表已经从小到大排序的情况下才成立。

以测试列表[7,69,2,221,8974]为例:

  • 最小元素是2(索引2),最大元素是8974(索引4);
  • 你的代码计算maxSum时,去掉的是第一个元素7,而非最小元素2,导致求和结果为69+2+221+8974=9266,与正确结果9271不符。

修正方案

方案1:先排序再计算

通过排序确保前4个是最小的4个元素,后4个是最大的4个元素:

def miniMaxSum(arr):
    sorted_arr = sorted(arr)
    min_sum = sum(sorted_arr[:4])
    max_sum = sum(sorted_arr[1:])
    print(min_sum, max_sum)

方案2:利用总和计算(无需排序)

更高效的方式:计算列表总和,减去最大元素得到最小和,减去最小元素得到最大和:

def miniMaxSum(arr):
    total = sum(arr)
    min_sum = total - max(arr)
    max_sum = total - min(arr)
    print(min_sum, max_sum)

内容的提问来源于stack exchange,提问作者larry8989

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:18:30