在 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
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短