很多子數組問題都採用哈希表解決。
一遍遍歷,字典中保留的是前綴和爲鍵值的下標的個數
from typing import *
from collections import defaultdict
class Solution:
'''
記錄和爲某個值得下標個數
子數組的問題很多都考慮前序和
'''
def subarraySum(self, nums: List[int], k: int) -> int:
dic1 = defaultdict(int)
dic1[0] = 1
cnt = 0
sum = 0
for val in nums:
sum += val
if sum - k in dic1:
cnt += dic1[sum - k]
dic1[sum] += 1
return cnt