javascript - 算法问题 - 减少所需的方法解决方案

标签 javascript algorithm

我刚刚编写了一个将执行以下操作的算法:

  1. 给出一个数组,即 [1,5]
  2. 该函数将揭示数组中数字之间的数字;
  3. 该函数会将这两个数字加上它们之间的所有数字。

问题:

我觉得这个解决方案并不像我希望的那样完善。我一直在尝试使用 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/

相关文章:

javascript - document.getElementById ("test").value 和 document.getElementById ("test").innerHTML 有什么区别

javascript - 如何以管理员身份通过 Cognito SDK 更新用户属性

python - 合并排序以计算 Python 中的拆分反转

c++ - 从图像中近似数字厚度的快速算法

algorithm - 重复:T(n) = (2+1/log n)T(n/2)

javascript - 使用正则表达式在随机字符串中准确查找字母

javascript - 使用 forEach 循环循环遍历一系列数字,并将任何包含整数 1 的数字替换为 "Beep"

javascript - 无法使用 JQUERY 删除 html 内容

javascript - jQuery 1.4.2 IE8 页面出现错误,预期为 ')'

algorithm - 带循环的 Floyd-Warshall 算法?