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",
|
"nums",
|
||||||
"powx",
|
"powx",
|
||||||
"pwwkew",
|
"pwwkew",
|
||||||
|
"subarray",
|
||||||
"umghlrlose",
|
"umghlrlose",
|
||||||
"xuan",
|
"xuan",
|
||||||
"zhong",
|
"zhong",
|
||||||
|
@ -340,6 +340,11 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重
|
|||||||
- LeetCode 50. Pow(x, n) <https://leetcode-cn.com/problems/powx-n/>
|
- LeetCode 50. Pow(x, n) <https://leetcode-cn.com/problems/powx-n/>
|
||||||
- LintCode 428. x的n次幂 <https://www.lintcode.com/problem/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)【未完成】
|
- [超级丑数](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