leet560 求和等于 K 的子数组数量
(1)暴力解法
(2)前缀和
sum(i~j) = s(j) - s(i-1) = k
s(j) - k = s(i-1)
保存三个状态: sum,sum-k,cnt
def subarraySum(self, nums: List[int], k: int) -> int:
if not nums or len(nums) == 0:
return 0
mapping = {0:1}
sum,cnt = 0,0
for num in nums:
sum += num
if sum-k in mapping:
cnt+= mapping[sum-k]
if sum not in mapping:
mapping[sum] = 1
else:
mapping[sum] +=1
return cnt