码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode]Map-560. Subarray Sum Equals K

时间:2018-01-13 20:51:43      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:pre   return   hash   solution   out   you   ret   cto   rip   

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

标签:pre   return   hash   solution   out   you   ret   cto   rip   

原文地址:https://www.cnblogs.com/chenhan05/p/8280321.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!