Mini-MaxSum的值,所以你会得到正确的答案

我一直在试图弄清楚我做错了什么。在 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
   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]
  }

图片[1]-Mini-MaxSum的值,所以你会得到正确的答案-唐朝资源网

console.log(minSum, maxSum) }

但它返回的结果与以前完全相同。所以要么我不明白这个问题(可能发生了什么),要么他们的期望值之和是错误的。我什至只是拿起一个计算器,得到了 9266,所以我不明白我做错了什么。

有没有人遇到过这个并且有任何想法?

更新

我自己并不感到惊讶,我读错了问题。您应该在获得总和之前对实际数组进行排序。他们并没有在问题中真正说明它,所以它的措辞很糟糕 imo 哈哈,但这就是我最终为获得正确值所做的事情,以防有人想知道。

if (arr.length > 5){
    return "Too long"
  }
  arr.sort(function(a, b) {

图片[2]-Mini-MaxSum的值,所以你会得到正确的答案-唐朝资源网

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] }

图片[3]-Mini-MaxSum的值,所以你会得到正确的答案-唐朝资源网

for (i=0;i<maxArr.length;i++){ maxSum += maxArr[i] } console.log(minSum, maxSum) } const numArr = [7, 69, 2, 221, 8974] minMax(numArr)

这显然总结了不同的值,所以你得到了正确的答案!

© 版权声明
THE END
喜欢就支持一下吧
点赞38赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容