一个非常大的数目 - 黑客等级

问题描述 投票:0回答:1

我正在努力解决黑客排行榜上的 "一笔很大的钱 "挑战。https:/www.hackerrank.comchallengesa-very-big-sumproblem

在这里,我必须对所给数组中的所有数字进行求和,所以我想出了两种解决方案。

第一个方案

function aVeryBigSum(ar){
  let sum = 0;
  for(let i = 0; i < ar.length; i++){
     sum += i;
   }
}

第二种解决方案

function(ar){
 let sum = ar.reduce((accumulator, currentValue) => {
  accumulator + currentValue;

});}

但是没有一个能用,我不知道为什么,我想也许我没有按照Hacker Rank的要求来写,但是我不确定

javascript arrays reduce
1个回答
1
投票

sum += i; 应该是 sum += ar[i];

同时返回金额

function aVeryBigSum(ar){
  let sum = 0;
  for(let i = 0; i < ar.length; i++){
     sum += ar[i];
  }
  return sum;
}

此外,减速器的功能应该是像

function a(ar){
  let sum = (accumulator, currentValue) => accumulator + currentValue;
  return ar.reduce(sum);
}

1
投票

在你的第一个解决方案中,你应该对数组进行索引,而不是仅仅将索引相加。

function aVeryBigSum(ar){
  let sum = 0;
  for(let i = 0; i < ar.length; i++){
     sum += ar[i];
  }
  return sum;
}

用reduce对数组进行加总

function aVeryBigSum(ar){
  return ar.reduce((a, b) => a + b, 0);
}

另外,注意你应该在函数中返回值。 虽然这对小数组有效,但你应该考虑一下如果和得到的值是: 很大. (见 笔记 HackerRank上的一节)。)

© www.soinside.com 2019 - 2024. All rights reserved.