#560. Subarray Sum Equals K
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].
Approach
题目大意:给你一组数据,然后问你连续子串和为K的数量
思路方法:用一个sum装连续和,我们需要一个hashmap记录相同sum的次数,然后每次查找sum-k的次数并相加,最后就是答案
Code
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
unordered_map<int, int>unmp;
int sum = 0;
int cnt = 0;
unmp[0] = 1;
for (int i = 0; i < nums.size(); i++) {
sum += nums[i];
int target = sum - k;
if (unmp.find(target) != unmp.end()) {
cnt += unmp[target];
}
unmp[sum]++;
}
return cnt;
}
};