add: 和为K的子数组
This commit is contained in:
parent
d348c63824
commit
5593f3e2c7
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@ -14,6 +14,7 @@
|
||||
"nums",
|
||||
"powx",
|
||||
"pwwkew",
|
||||
"subarray",
|
||||
"umghlrlose",
|
||||
"xuan",
|
||||
"zhong",
|
||||
|
@ -340,6 +340,11 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重
|
||||
- LeetCode 50. Pow(x, n) <https://leetcode-cn.com/problems/powx-n/>
|
||||
- LintCode 428. x的n次幂 <https://www.lintcode.com/problem/powx-n/>
|
||||
|
||||
- [和为K的子数组](src/math/subarray-sum-equals-k.js)
|
||||
|
||||
- LeetCode 560. 和为K的子数组 <https://leetcode-cn.com/problems/subarray-sum-equals-k/>
|
||||
- LintCode 838. 子数组和为K <https://www.lintcode.com/problem/subarray-sum-equals-k/>
|
||||
|
||||
## 堆
|
||||
|
||||
- [超级丑数](src/stack/super-ugly-number.js)【未完成】
|
||||
|
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
|
||||
}
|
5
test/math/subarray-sum-equals-k.test.js
Normal file
5
test/math/subarray-sum-equals-k.test.js
Normal file
@ -0,0 +1,5 @@
|
||||
import { subarraySum } from '../../src/math/subarray-sum-equals-k'
|
||||
|
||||
test('和为K的子数组', () => {
|
||||
expect(subarraySum([1, 1, 1], 2)).toBe(2)
|
||||
})
|
Loading…
Reference in New Issue
Block a user