Skip to content

Commit 33a6a08

Browse files
committed
Subarray Sum Equals K
1 parent 6fd5058 commit 33a6a08

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <unordered_map>
4+
using namespace std;
5+
// Perfix sum approach
6+
7+
int subarraySum(vector<int> &nums, int k)
8+
{
9+
int n = nums.size();
10+
int count = 0;
11+
vector<int> prefixSum(n, 0);
12+
13+
prefixSum[0] = nums[0];
14+
for (int i = 1; i < n; i++)
15+
{
16+
prefixSum[i] = prefixSum[i - 1] + nums[i];
17+
}
18+
19+
unordered_map<int, int> m;
20+
21+
for (int j = 0; j < n; j++)
22+
{
23+
if (prefixSum[j] == k)
24+
{
25+
count++;
26+
}
27+
28+
int val = prefixSum[j] - k;
29+
if (m.find(val) != m.end())
30+
{
31+
count += m[val];
32+
}
33+
34+
if (m.find(prefixSum[j]) == m.end())
35+
{
36+
m[prefixSum[j]] = 0;
37+
}
38+
39+
m[prefixSum[j]]++;
40+
}
41+
42+
return count;
43+
}
44+
45+
int main()
46+
{
47+
vector<int> arr = {9, 4, 20, 3, 10, 5};
48+
int target = 33;
49+
50+
cout << subarraySum(arr, target) << endl;
51+
52+
return 0;
53+
}
138 KB
Binary file not shown.

0 commit comments

Comments
 (0)