560. Subarray Sum Equals K
Medium
283976FavoriteShare
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].
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
int res=0,n=nums.size();
for(int i=0;i<n;i++){
int sum=nums[i];
if(sum==k) res++;
for(int j=i+1;j<n;j++){
sum+=nums[j];
if(sum==k) res++;
}
}
return res;
}
};
- Runtime: 476 ms, faster than 23.12% of C++ online submissions for Subarray Sum Equals K.
- Memory Usage: 10 MB, less than 97.33% of C++ online submissions for Subarray Sum Equals K.
- Next challenges:
- Subarray Product Less Than K
- Subarray Sums Divisible by K
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
int res=0,n=nums.size(),sum=0;
unordered_map<int,int> m{{0,1}};
for(int i=0;i<n;i++){
sum+=nums[i];
res+=m[sum-k];
m[sum]++;
}
return res;
}
};
- Runtime: 44 ms, faster than 52.20% of C++ online submissions for Subarray Sum Equals K.
- Memory Usage: 17.5 MB, less than 30.67% of C++ online submissions for Subarray Sum Equals K.
- https://www.cnblogs.com/lightwindy/p/9546153.html