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

HackerRank Mini-Max Sum题JavaScript实现求和错误问题排查

HackerRank Mini-Max Sum解题踩坑记录

问题背景

我一直在绞尽脑汁想找出哪里出错了。HackerRank的Mini-Max Sum题目要求是找出5个数字组成的数组的部分元素之和。官方给出的示例中,arr = [1,2,3,4,5]的最小和为1+2+3+4 = 10,最大和为2+3+4+5 = 14。

我还是新手,所以有时候解题对我来说还是有挑战的。我第一次写出的解法如下:

function minMax(arr){
   console.log(arr, 'this is our arr')
   var baseSum = 0
   var minSum = 0
   var maxSum = 0
   var i = null

   for(i=1;i<4;i++){
     baseSum += arr[i]
   }

   console.log(baseSum, 'this is baseSum')
   console.log(minSum = baseSum + arr[0], maxSum = baseSum + arr[4])
}

const numArr = [7, 69, 2, 221, 8974]

minMax(numArr)

我的思路是先提取两个和值的公共部分,再分别加数组的第一个和最后一个元素得到结果。这个解法通过了一个测试用例,但是用到上面列出的numArr时就失败了,我自己加后4个数字得到的结果是9266,但预期值是9271。

我花了一些时间想重构方案,我知道一开始的写法不好,但我也在努力尝试!

我又写出了这个版本:

function minMax(arr){
  if (arr.length > 5){
    return "Too long"
  }

  var minArr = arr.slice(0,4)
  var maxArr = arr.slice(1,5)

  minSum = 0
  maxSum = 0

  for (i=0; i < minArr.length;i++){
    minSum += minArr[i]
  }

  for (x=0; x < maxArr.length; x++){
    maxSum += maxArr[x]
  }

  console.log(minSum, maxSum)
}

但它返回的结果和之前完全一样。所以要么是我没理解题目(大概率是这个原因),要么是官方的预期求和值有问题。我甚至拿计算器算,得到的也是9266,完全不知道自己哪里错了。

有没有人遇到过这个问题,知道是怎么回事吗?

问题更新

不出我所料,是我读题错了。求和之前需要先排序数组。我觉得题目描述写得不好,没有明确说明这点,哈哈。如果有人好奇的话,我最后加了排序逻辑就得到正确值了,代码如下:

function minMax(arr){
  if (arr.length > 5){
    return "Too long"
  }

  arr.sort(function(a, b) {
  return a - b;
  });

  var minArr = arr.slice(0,4)
  var maxArr = arr.slice(1,5)

  var minSum = 0
  var maxSum = 0
  var i = null
  

  for (i=0;i<minArr.length;i++){
    minSum += minArr[i]
  } 

  for (i=0;i<maxArr.length;i++){
    maxSum += maxArr[i]
  }

  console.log(minSum, maxSum)

}

const numArr = [7, 69, 2, 221, 8974]

minMax(numArr)

这个版本自然是对不同的数值求和,所以就能得到正确答案了!

内容的提问来源于stack exchange,提问作者Austin L.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:54:11