[LeetCode] 560. Subarray Sum Equals K_Medium
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 560. Subarray Sum Equals K_Medium相关的知识,希望对你有一定的参考价值。
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
以上是关于[LeetCode] 560. Subarray Sum Equals K_Medium的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 560. Subarray Sum Equals K
[leetcode]Map-560. Subarray Sum Equals K
[LeetCode] 560. Subarray Sum Equals K_Medium
[LeetCode] 560.Subarray Sum Equals K_Medium tag: Array, Subarray, prefix Sum