首页 > 代码库 > FCC 中级算法题 对所有的数字求和
FCC 中级算法题 对所有的数字求和
题干:
我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。
最小的数字并非总在最前面。
1 function sumAll(arr) {
2 return 1;
3 }
4
5 sumAll([1, 4]);
会用到的函数
Math.max()
Math.min()
Array.reduce()
思路:
(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 中级算法题 对所有的数字求和
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。