我刚刚编写了一个将执行以下操作的算法:
- 给出一个数组,即
[1,5]
; - 该函数将揭示数组中数字之间的数字;
- 该函数会将这两个数字加上它们之间的所有数字。
问题:
我觉得这个解决方案并不像我希望的那样完善。我一直在尝试使用 reduce,以某种方式控制索引参数,以替换 for
语句,但没有成功。我需要一些帮助,请告诉我如何做到这一点。
var sumAll = (arr) => {
let max = Math.max(...arr);
let min = Math.min(...arr);
let newArr = [];
for (var i = min; i <= max; i++) { newArr.push(min++) }
return newArr.reduce(function(a,b) {return a+b})
}
console.log(sumAll(arr))
// return 15, that is the sum of the numbers in newArr [1, 2, 3, 4, 5].```
最佳答案
如果您的目标只是求两个数之和,可以使用公式:(max * (max+1) - (min) * (min-1))/2
.但这并没有完全回答如何使用函数操作来解决这个问题......
var sumBetweenSpanningRange = (arr) => {
let max = Math.max(...arr);
let min = Math.min(...arr);
return (max * (max + 1) - min * (min -1)) / 2
}
console.log(sumBetweenSpanningRange([1,1,3,5]))
关于javascript - 算法问题 - 减少所需的方法解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58403611/