Home Subarray Sum Equals K
Post
Cancel

LeetCode #560: Subarray Sum Equals K (C/C++).

medium

source: https://leetcode.com/problems/subarray-sum-equals-k
C/C++ Solution to LeetCode problem 560. Subarray Sum Equals K.

Problem


Given an array of integers nums and an integer k, return the total number of subarrays whose sum equals to k.

A subarray is a contiguous non-empty sequence of elements within an array.

Examples


Example 1:

Input: nums = [1,1,1], k = 2
Output: 2

Example 2:

Input: nums = [1,2,3], k = 3
Output: 2

Constraints


  • 1 <= nums.length <= 2 * 104
  • -1000 <= nums[i] <= 1000
  • -107 <= k <= 107

Solution


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
  int subarraySum(vector<int>& nums, int k) {
    int count = 0;
    int cSum = 0;

    unordered_map<int,int>m;
    for (int i=0; i<nums.size(); i+=1) {
      cSum += nums[i];
      if (cSum == k)
        count++;

      if (m.find(cSum - k) != m.end())
        count += m[cSum - k];
      
      m[cSum]++;
    }
    return count;
  }
};
This post is licensed under CC BY 4.0 by the author.

Continuous Subarray Sum

Smallest Rotation with Highest Score