1. 程式人生 > >[leetcode]Map-560. Subarray Sum Equals K

[leetcode]Map-560. Subarray Sum Equals K

not who nbsp bar pan put pre ret color

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) {
        int n=nums.size();
        if (n==0)
            return 0;
       
        vector<int> sum(n+1,0);
        for (int i=1; i<=n; i++)
            sum[i]=nums[i-1]+sum[i-1];
        
        unordered_map
<int,int> hash; hash[0]=1; int res=0; for (int i=1; i<=n; i++) { if (hash[sum[i]-k]) res+=hash[sum[i]-k]; hash[sum[i]]++; } return res; } };

[leetcode]Map-560. Subarray Sum Equals K