我一直在试图弄清楚我做错了什么。在 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]
}
console.log(minSum, maxSum)
}
但它返回的结果与以前完全相同。所以要么我不明白这个问题(可能发生了什么),要么他们的期望值之和是错误的。我什至只是拿起一个计算器,得到了 9266,所以我不明白我做错了什么。
有没有人遇到过这个并且有任何想法?
更新
我自己并不感到惊讶,我读错了问题。您应该在获得总和之前对实际数组进行排序。他们并没有在问题中真正说明它,所以它的措辞很糟糕 imo 哈哈,但这就是我最终为获得正确值所做的事情,以防有人想知道。
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)
这显然总结了不同的值,所以你得到了正确的答案!
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容