Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.
Example 1:
Input:nums = [1,1,1], k = 2 Output: 2
Note:
- The length of the array is in range [1, 20,000].
- The range of numbers in the array is [-1000, 1000] and the range of the integer k is [-1e7, 1e7].
这个题目思路是利用cumulative sum, 前面数字之和去计算. 参考Leetcode 原题Solution.
建一个diction, 记录 sum 出现过的次数, 然后每次用sum - target, 如果存在在dction里面, count += d[sum-target], 最后返回count. 如果直到这个思路之后其实不难, 否则还蛮难想的.
class Solution: def subarraySum(self, nums, k): """ :type nums: List[int] :type k: int :rtype: int """ d, count,s = {0:1}, 0,0 # 最开始有0:1 是因为"" 的sum是0, 所以初始为1 for num in nums: s += num if s - k in d: count += d[s-k] if s not in d: d[s] = 1 else: d[s] += 1 return count
原文地址:https://www.cnblogs.com/Johnsonxiong/p/9206892.html
时间: 2024-11-05 19:26:47