文章目錄
- 題目鏈接
- 解題思路
- 解題代碼
題目鏈接
560.和為 K 的子數組
解題思路
1.定義變量count(計算個數,返回值)為0、n(當前nums長度)、preSums(利用利用defaultdict的特性,當presum-k不存在時,返回的是0),其中先定義鍵為0,值為1、presum為0
2.for range循環遍歷n,處理nums數組里,符合條件的數據
2(1).i所在nums數組索引里的值賦值累加給presum;
2(2).presum-k所在preSums數組索引里的值賦值累加給count;
2(3).presum所在preSums數組索引里的值賦值累加1
解題代碼
class Solution:def subarraySum(self, nums: List[int], k: int) -> int:count = 0n = len(nums)preSums = collections.defaultdict(int)preSums[0] = 1presum = 0for i in range(n):presum += nums[i]count += preSums[presum - k]preSums[presum] += 1 return count