Longest Subarray Zero Sum
Problem
Given an array having both positive and negative integers. The task is to compute the length of the largest subarray with sum 0.
Example 1:
Input: N = 8
A[] = {15,-2,2,-8,1,7,10,23}
Output: 5
Explanation:The largest subarray withsum 0 will be -2 2 -8 1 7.
Your Task:You just have to complete the function maxLen() which takes two arguments an array A and n, where n is the size of the array A and returns the length of the largest subarray with 0 sum.
Solution Approach
Expected Time complexity:
Click - to see solution code
- C++
#include <bits/stdc++.h>
int LongestSubsetWithZeroSum(vector<int> arr) {
int ans = 0, sm = 0;
int n = arr.size();
unordered_map<int, int> mp;
mp[0] = -1;
for (int i = 0; i < n; i++) {
sm += arr[i];
if (mp.find(sm) != mp.end()) {
ans = max(ans, i - mp[sm]);
} else {
mp[sm] = i;
}
}
return ans;
}