import java.util.*;
class Solution {
public static int maxLength(int arr[]) {
// code here
int n=arr.length;
int target=0;
Map
<Integer, Integer
> map
= new HashMap
<>();
int prefixSum = 0;
int maxLength = 0;
map.put(0, -1);
for (int j = 0; j < n; j++) {
prefixSum += arr[j];
int x = prefixSum - target;
if (map.containsKey(x)) {
int i = map.get(x);
int currentLength = j - i;
if (currentLength > maxLength) {
maxLength = currentLength;
}
}
map.putIfAbsent(prefixSum, j);
}
return maxLength;
}
public static void main
(String[] args
){ int [] arr={15, -2, 2, -8, 1, 7, 10, 23};
int ans=maxLength(arr);
System.
out.
println("Largest subarray length with 0 sum : "+ans
); }
}
aW1wb3J0IGphdmEudXRpbC4qOwpjbGFzcyBTb2x1dGlvbiB7CiAgICBwdWJsaWMgc3RhdGljIGludCBtYXhMZW5ndGgoaW50IGFycltdKSB7CiAgICAgICAgLy8gY29kZSBoZXJlCiAgICAgICAgaW50IG49YXJyLmxlbmd0aDsKICAgICAgICBpbnQgdGFyZ2V0PTA7CiAgICAgICAgTWFwPEludGVnZXIsIEludGVnZXI+IG1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKIAogICAgICAgIGludCBwcmVmaXhTdW0gPSAwOwogICAgICAgIGludCBtYXhMZW5ndGggPSAwOwogCiAgICAgICAgbWFwLnB1dCgwLCAtMSk7CiAKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47IGorKykgewogICAgICAgICAgICBwcmVmaXhTdW0gKz0gYXJyW2pdOwogCiAgICAgICAgICAgIGludCB4ID0gcHJlZml4U3VtIC0gdGFyZ2V0OwogCiAgICAgICAgICAgIGlmIChtYXAuY29udGFpbnNLZXkoeCkpIHsKICAgICAgICAgICAgICAgIGludCBpID0gbWFwLmdldCh4KTsKICAgICAgICAgICAgICAgIGludCBjdXJyZW50TGVuZ3RoID0gaiAtIGk7CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudExlbmd0aCA+IG1heExlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIG1heExlbmd0aCA9IGN1cnJlbnRMZW5ndGg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KIAogICAgICAgICAgICBtYXAucHV0SWZBYnNlbnQocHJlZml4U3VtLCBqKTsKICAgICAgICB9CiAKICAgICAgICByZXR1cm4gbWF4TGVuZ3RoOwogICAgfQogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CiAgICAgICAgaW50IFtdIGFycj17MTUsIC0yLCAyLCAtOCwgMSwgNywgMTAsIDIzfTsKICAgICAgICBpbnQgYW5zPW1heExlbmd0aChhcnIpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTGFyZ2VzdCBzdWJhcnJheSBsZW5ndGggd2l0aCAwIHN1bSA6ICIrYW5zKTsKICAgIH0KfQ==