gpt4 book ai didi

javascript - 尝试使用reducer函数将一个数组中的所有值添加到JS中的另一个数组中

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:07:52 24 4
gpt4 key购买 nike

编辑:我发现了问题:我没有考虑 3 和 5 的倍数何时匹配!关于如何消除重复数字的任何提示?

我正在尝试解决自由代码营的欧拉问题的第一个问题:3 和 5 的倍数 https://learn.freecodecamp.org/coding-interview-prep/project-euler/problem-1-multiples-of-3-and-5

问题是这样的:找到提供的参数值数字以下的所有 3 或 5 的倍数的总和。

当我查看我的代码时,它适用于 10 的情况,但不适用于其他任何情况。我看过,尝试了另一种选择,但找不到问题所在。这是我所做的。

我的思考过程和当前任务的执行情况

  1. 循环列出所有数字,直到参数编号
  2. 制作了两个 while 循环,一个用于 3 的倍数,一个用于 5 的倍数
  3. 在每个 while 循环中我想连续添加乘数(3 或 5)直到 num 小于 3 或 5 的总和我必须添加 +3 和 +5,这样总数组中的最后一个数字就不会超过 num

  4. 然后我获取总计数组并实现了reduce函数以获得三五总和

注意:我可以获得一组值。在 10 的情况下,我得到了 [3, 6, 9, 5]

我的代码

function multiplesOf3and5(num) {
let total = [];
let threes = 0;
let fives = 0;
const reducer = (accumulator, currentValue) => accumulator + currentValue;

for (let i = 1; i < num; i++) {
while (num > threes+3) {
//total.push(threes);
threes += 3;
total.push(threes)
}
while (num > fives+5) {
//total.push(fives);
fives += 5;
total.push(fives)
}
}
total = total.reduce(reducer);
return total;
}
console.log(multiplesOf3and5(10))
console.log(multiplesOf3and5(49))
console.log(multiplesOf3and5(1000))

我尝试解决的问题:

-尝试在每个 while 循环中单独求和,以获得所有 3 的倍数的总和,直到 num 和第二个 while 循环的相同

-我通过添加两个数组 total1 和 total 来分别计算三和五的总和。

测试用例:

multiplesOf3and5(1000) 应该返回 233168。(我得到 266333)

multiplesOf3and5(49) 应该返回 543。(我得到 633)

multiplesOf3and5(10) 应该返回 23。(我得到 23)

最佳答案

您当前的解决方案可以通过消除两个数组(存储倍数的数组)中的重复项来解决。但是,这仍然是实现您想要的目标的一种非常迂回的方式。从您的问题陈述中,我不明白为什么您需要存储倍数,然后按照您选择的方式获取总和。

由于您无论如何都要遍历 1 和参数之间的所有整数,因此您可以在遇到它们时立即将它们添加到总和中:

let sum = 0
for (let i = 1; i < num; i++) {
if (i % 3 == 0 || i % 5 == 0) {
sum += i
}
}

也就是说,除非您有特殊原因选择以这种方式解决问题,但您没有说明。

关于javascript - 尝试使用reducer函数将一个数组中的所有值添加到JS中的另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54173512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com