class Solution(object):
def subarraySum(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
sum_ = {}
sum_[0] = 1
ret = 0
curr_sum = 0
for i in nums:
curr_sum+=i
ret+=sum_.get(curr_sum-k,0)
sum_[curr_sum] = sum_.get(curr_sum,0)+1
return ret
class Solution(object):
def numberOfSubarrays(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
dict_ = {}
dict_[0]=1
curr_sum = 0
ret = 0
for i in nums:
curr_sum+=(i%2)
ret+=dict_.get(curr_sum-k,0)
dict_[curr_sum]=dict_.get(curr_sum,0)+1
return ret
class Solution(object):
def subarraysDivByK(self, A, K):
"""
:type A: List[int]
:type K: int
:rtype: int
"""
dict_ = {}
dict_[0]=1
ret = 0
curr_sum = 0
for i in A:
curr_sum+=i
# 前缀和除以K的余数
key = (curr_sum % K+K) % K
ret+=dict_.get(key,0)
dict_[key]=dict_.get(key,0)+1
return ret
class Solution(object):
def checkSubarraySum(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: bool
"""
dict_ = {}
# 与下标为1的元素刚好满足要求(》=2)
dict_[0]=-1
curr_sum=0
for i,v in enumerate(nums):
curr_sum+=v
# 余数相同,则表明至少n*k
if k!=0:
curr_sum%=k
if curr_sum in dict_:
if i-dict_[curr_sum]>1:
return True
else:
dict_[curr_sum]=i
return False