在 JavaScript 中可以被 n 整除的总和

问题

我们需要编写一个 JavaScript 函数,它接受一个数字数组 arr 作为第一个参数,一个数字 num 作为第二个参数。我们的函数应该返回总和可被 num 整除的(连续的、非空的)子数组的数量。

例如,如果函数的输入是 -

const arr = [4, 5, 0, -2, -3, 1];

const num = 5;

那么输出应该是 -

const output = 7;

输出说明

有 7 个子数组,其总和可被 5 整除 -

[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]

示例

此代码将是 -

const arr = [4, 5, 0, -2, -3, 1];

const num = 5;

const divisibleSum = (arr = [], num = 1) => {

   const map = {};

   let sum = 0;

   for (let i = 0; i < arr.length; i++) {

      sum += arr[i];

      const key = ((sum % num) + num) % num;

      map[key] = map[key]+1||1;

   };

   let s = 0;

   for (let i = 0; i < num; i++) {

      if (map[i] > 1) {

         s += (map[i] * (map[i] - 1)) / 2;

      }

   }

   return s + (map[0]||0);

};

console.log(divisibleSum(arr, num));

输出结果

控制台中的输出将是 -

7

以上是 在 JavaScript 中可以被 n 整除的总和 的全部内容, 来源链接: utcz.com/z/347599.html

回到顶部