给定五个正整数,找到可以通过将五个整数中的四个精确相加来计算的最小值和最大值。然后将各自的最小值和最大值打印为一行两个空格分隔的长整数。
例如var arr = [1,3,5,7,9]
输出将为16 24。
这是我的解决方案。除了一种情况之外,一切都有效。当 arr 中的所有元素都相等时,我的解决方案返回错误。我该如何修复它?
function miniMaxSum(arr) {
let largest = arr[0];
let smallest = arr[0];
let largestSum = 0;
let smallestSum = 0;
for(let i = 0; i < arr.length; i ++){
if(arr[i] > largest){
largest = arr[i];
}
if (arr[i] < smallest){
smallest = arr[i];
}
}
for(let j = 0; j < arr.length; j ++){
if(arr[j] < largest){
smallestSum = smallestSum + arr[j];
}
if(arr[j] > smallest){
largestSum = largestSum + arr[j];
}
}
console.log(smallestSum + " " + largestSum)
}
最佳答案
您可以将第一个值作为 sum
、min
和 max
值的起始值,并从第二项开始迭代。然后添加实际值并检查 min
和 max
值并进行调整。
最后返回 sum
和 max
以及 sum
和 min
的增量。
function minMaxSum(array) {
var sum = array[0],
min = array[0],
max = array[0];
for (let i = 1; i < array.length; i++) {
sum += array[i];
if (min > array[i]) min = array[i];
if (max < array[i]) max = array[i];
}
return [sum - max, sum - min];
}
console.log(minMaxSum([1, 3, 5, 7, 9]));
关于javascript - Max-Mn Sum JavaScript HackerRank 挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60362680/