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:

  1. The length of the array is in range [1, 20,000].
  2. 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) {
        unordered_map<int,int> sumTracker;
        int ret =0;
        int sum =0;
        sumTracker[0] = 1;
        for(auto& num: nums)
        {
            sum += num;
            if(sumTracker[sum - k])
            {
                ret += sumTracker[sum - k] ;
            }
            sumTracker[sum]++;
        }
        
        return ret;
        
    }
};

猜你喜欢

转载自blog.csdn.net/dongyu_1989/article/details/80475546
今日推荐