add: 和为K的子数组
This commit is contained in:
25
src/math/subarray-sum-equals-k.js
Normal file
25
src/math/subarray-sum-equals-k.js
Normal file
@ -0,0 +1,25 @@
|
||||
/**
|
||||
* @param {number[]} nums
|
||||
* @param {number} k
|
||||
* @return {number}
|
||||
*/
|
||||
export const subarraySum = function (nums, k) {
|
||||
const map = new Map()
|
||||
let sum = 0
|
||||
let res = 0
|
||||
|
||||
nums.forEach((n, index) => {
|
||||
sum += n
|
||||
if (sum === k) res++
|
||||
const subSum = sum - k
|
||||
let value = []
|
||||
if (map.has(subSum)) res += map.get(subSum).length
|
||||
if (map.has(sum)) {
|
||||
value = map.get(sum)
|
||||
}
|
||||
value.push(index)
|
||||
map.set(sum, value)
|
||||
})
|
||||
|
||||
return res
|
||||
}
|
Reference in New Issue
Block a user