FCC 中级算法题 对所有的数字求和
Posted lailailee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FCC 中级算法题 对所有的数字求和相关的知识,希望对你有一定的参考价值。
题干:
我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。
最小的数字并非总在最前面。
1 function sumAll(arr) {
2 return 1;
3 }
4
5 sumAll([1, 4]);
会用到的函数
思路:
(1)通过Math.max(),Math.min()抽出数组中的最大值max和最小值min;
(2)创建新数组获取最小值和最大值之间的数值;
(3)利用Array.reduce()对新数组进行累加。
知识点:
(1)Math.max(),Math.min()不能接受数组作参数,Math.max(array)这种操作是不存在的;
而apply是所有函数都有的方法,fun.apply(thisArg, [argsArray])
,thisArg相当于在 fun
函数运行时指定的 this
值
,
argsArray
是
一个数组或者类数组对象,其中的数组元素将作为单独的参数传给fun
函数;
1 function getMaxOfArray(numArray) { 2 return Math.max.apply(null, numArray); 3 }
这个函数用for循环也可以实现,但是太过繁琐。
(2)reduce()方法可以对数组的每一个元素进行操作,下面代码中value是单个元素的值,sum则是这些元素的累加值;
1 var total = arr.reduce(function (sum, value) { 2 return sum + value; 3 }, 0);
我的代码:
1 function sumAll(arr) { 2 function getMaxOfArray(numArray) { 3 return Math.max.apply(null, numArray); 4 } 5 6 function getMinOfArray(numArray) { 7 return Math.min.apply(null, numArray); 8 } 9 var max = getMaxOfArray(arr); 10 var min = getMinOfArray(arr); 11 var array = []; 12 13 for (var i = min; i <= max; i++) { 14 arr[i - min] = i; 15 } 16 var total = arr.reduce(function (sum, value) { 17 return sum + value; 18 }, 0); 19 20 return total; 21 } 22 sumAll([1, 4]);
以上是关于FCC 中级算法题 对所有的数字求和的主要内容,如果未能解决你的问题,请参考以下文章