Largest Subarray with 0 Sum
Given an array having both positive and negative integers. The task is to compute the length of the largest subarray with a sum of 0.
Examples:
Input: arr[] = {15,-2,2,-8,1,7,10,23}, n = 8
Output: 5
Explanation: The largest subarray with sum 0 is -2 2 -8 1 7.
Input: arr[] = {2,10,4}, n = 3
Output: 0
Explanation: There is no subarray with 0 sum.
Input: arr[] = {1, 0, -4, 3, 1, 0}, n = 6
Output: 5
Explanation: The subarray is 0 -4 3 1 0.
Constraints:
1 <= n <= 10^5
-1000 <= arr[i] <= 1000, for each valid i
Approach
Let us build a generic solution instead of only figuring out for subarray with sum = 0.
The most basic approach will be to scan through all the present subarrays and store them as the current answer if any subarrays get the sum = target. We update our answer, if we get a better length. But this approach will be time-consuming as we need to scan through the array twice in 2 loops, thus increasing the time complexity to O(n ^ 2).
Better Approach
A better approach will be to make use of the prefix sum.