題目:
給定一個(gè)整數(shù)數(shù)組和一個(gè)整數(shù) k,你需要找到該數(shù)組中和為 k 的連續(xù)的子數(shù)組的個(gè)數(shù)。
示例 1 :
輸入:nums = [1,1,1], k = 2
輸出: 2 , [1,1] 與 [1,1] 為兩種不同的情況。
說明 :
數(shù)組的長度為 [1, 20,000]。
數(shù)組中元素的范圍是 [-1000, 1000] ,且整數(shù) k 的范圍是 [-1e7, 1e7]。
鏈接:https://leetcode-cn.com/problems/subarray-sum-equals-k
思路:
1、遍歷整個(gè)數(shù)組,用一個(gè)字典保存數(shù)組中和為特定值的數(shù)量,如果sum-k在字典中,則返回值次數(shù)加上字典對應(yīng)的value值
Python代碼:
class Solution(object):
def subarraySum(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
sum = 0
cnt = 0
dt = {}
dt[0] = 1
for i in range(len(nums)):
sum += nums[i]
if sum-k in dt:
cnt += dt[sum-k]
if sum not in dt:
dt[sum] = 0
dt[sum] += 1
return cnt