import java.util.*;
public class Main {
public static int findMaxSubarrayLength(int[] arr) {
Map
<Integer, Integer
> prefixMap
= new HashMap
<>(); int sum = 0, maxLength = 0;
prefixMap.put(0, -1);
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
if (prefixMap.containsKey(sum)) {
maxLength
= Math.
max(maxLength, i
- prefixMap.
get(sum
)); } else {
prefixMap.put(sum, i);
}
}
return maxLength;
}
public static void main
(String[] args
) { int[] arr = {15, -2, 2, -8, 1, 7, 10, 23};
System.
out.
println("Answer is " + findMaxSubarrayLength
(arr
)); }
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyBpbnQgZmluZE1heFN1YmFycmF5TGVuZ3RoKGludFtdIGFycikgewogICAgICAgIE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBwcmVmaXhNYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgaW50IHN1bSA9IDAsIG1heExlbmd0aCA9IDA7CiAgICAgICAgcHJlZml4TWFwLnB1dCgwLCAtMSk7CgogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHN1bSArPSBhcnJbaV07CgogICAgICAgICAgICBpZiAocHJlZml4TWFwLmNvbnRhaW5zS2V5KHN1bSkpIHsKICAgICAgICAgICAgICAgIG1heExlbmd0aCA9IE1hdGgubWF4KG1heExlbmd0aCwgaSAtIHByZWZpeE1hcC5nZXQoc3VtKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwcmVmaXhNYXAucHV0KHN1bSwgaSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBtYXhMZW5ndGg7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludFtdIGFyciA9IHsxNSwgLTIsIDIsIC04LCAxLCA3LCAxMCwgMjN9OwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQW5zd2VyIGlzICIgKyBmaW5kTWF4U3ViYXJyYXlMZW5ndGgoYXJyKSk7CiAgICB9Cn0K