600

600

Q560.ts

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
 * 给你一个整数数组 nums 和一个整数 k 
 * 请你统计并返回 该数组中和为 k 的子数组的个数 
 * 子数组是数组中元素的连续非空序列。
 * @param nums
 * @param k
 * @returns
 */
function subarraySum(nums: number[], k: number): number {
    const mp: Map<number, number> = new Map();
    mp.set(0, 1);
    let count: number = 0,
        pre: number = 0;
    for (const x of nums) {
        pre += x;
        if (mp.has(pre - k)) {
            count += mp.get(pre - k);
        }
        if (mp.has(pre)) {
            mp.set(pre, mp.get(pre) + 1);
        } else {
            mp.set(pre, 1);
        }
    }
    return count;
}
Licensed under CC BY-NC-SA 4.0
最后更新于 Mar 30, 2025 10:08 UTC