首页 > 解决方案 > 如何在不重复求和元素的情况下多次迭代数组

问题描述

我正在尝试解决这个问题,但我不知道为什么我不能通过所有测试用例。我需要一些帮助和解释,我怎样才能多次计算一些数组(在这个例子中:变量 s)而不重复我已经求和的相同元素。

问题描述:

莉莉有一块巧克力棒,她想和罗恩一起过生日。每个方块上都有一个整数。她决定共享所选条形的连续片段,使得片段的长度与 Ron 的出生月份相匹配,并且正方形上的整数之和等于他的出生日期。你必须确定她可以用多少种方法来分巧克力。

将巧克力棒视为一个正方形数组,s=[2,2,1,3,2]。她想找到与 Ron 的出生日期相加的片段,d=4长度等于他的出生月份,m=2。在这种情况下,有两个片段符合她的标准:[2,2][1,3]

功能说明

在下面的编辑器中完成生日功能。它应该返回一个整数,表示 Lily 可以分割巧克力棒的方式数。

生日有以下参数:

s:一个整数数组,每个巧克力方块上的数字, d:一个整数,罗恩的生日, m:一个整数,罗恩的出生月份

我的代码:

function birthday(s, d, m) {
    let bars = 0;

    if (m !== 1) {
        s.reduce((acc, val) => (acc+val) === d ? ++bars : bars)
    } else {
        bars = 1;
    }

    return bars;
}

一些案例:

我的代码适用于此:

这可以在 HackerRank > Practice > Algorithms > Implementation 上找到

标签: javascriptarraysloops

解决方案


每当您在数组上循环以获得求和或对其进行数学方程式时,您必须删除您已经计算过的特定元素,您可以使用其中一个内置函数来使用特定的数组从数组中删除一个元素指数。 Array.prototype.slice() && Array.prototype.splice()


推荐阅读