描述
Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.
您在真实的面试中是否遇到过这个题?
是
样例
Input:nums = [1,1,1], k = 2
Output: 2
基本思路都差不多,就是建立累加数组。使用关联列表会更简单一点。
class Solution {
public:
/**
* @param nums: a list of integer
* @param k: an integer
* @return: return an integer, denote the number of continuous subarrays whose sum equals to k
*/
int subarraySumEqualsK(vector<int> &nums, int k) {
// write your code here
int res = 0, sum = 0, n = nums.size();
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;
}
};