192 字
1 分钟
LeetCode-560.和为 K 的子数组
哈希表
给你一个整数数组
nums和一个整数k,请你统计并返回 该数组中和为k的子数组的个数 。子数组是数组中元素的连续非空序列
示例 1:
输入:nums = [1,1,1], k = 2输出:2示例 2:
输入:nums = [1,2,3], k = 3输出:2
1.解法
思路:1.负数破坏了单调性,所以不能用滑动窗口
2.前缀和 + 哈希表 | k = 两个前缀和的差
3.参考1. 两数之和
func subarraySum(nums []int, k int) int { sum := 0 m := make(map[int]int) m[0] = 1 res := 0
for i := 0; i < len(nums); i++ { sum += nums[i] need := sum - k if j, ok := m[need]; ok { res += j } m[sum]++ } return res} LeetCode-560.和为 K 的子数组
https://sheep44044.github.io/posts/算法/哈希/leetcode-560和为-k-的子数组/