/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
int[] arr = {15, -2, 2, -8, 1, 7, 10};
System.
out.
println("longest subarray with sum zero is " + longestSubarrayWithSumZero
(arr
)); }
static int longestSubarrayWithSumZero(int[] arr){
HashMap
<Integer,Integer
> map
= new HashMap
<>(); map.put(0,-1);
int prefixSum = 0;
int max = 0;
for(int i=0;i<arr.length;i++){
prefixSum +=arr[i];
if(map.containsKey(prefixSum)){
int leftIndex = map.get(prefixSum);
max
= Math.
max(max, i
-leftIndex
); } else
map.put(prefixSum,i);
}
return max;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlpbnRbXSBhcnIgPSAgezE1LCAtMiwgMiwgLTgsIDEsIDcsIDEwfTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oImxvbmdlc3Qgc3ViYXJyYXkgd2l0aCBzdW0gemVybyBpcyAiICsgbG9uZ2VzdFN1YmFycmF5V2l0aFN1bVplcm8oYXJyKSk7Cgl9CglzdGF0aWMgaW50IGxvbmdlc3RTdWJhcnJheVdpdGhTdW1aZXJvKGludFtdIGFycil7CgkJSGFzaE1hcDxJbnRlZ2VyLEludGVnZXI+IG1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKCQltYXAucHV0KDAsLTEpOwoJCWludCBwcmVmaXhTdW0gPSAwOwoJCWludCBtYXggPSAwOwoJCWZvcihpbnQgaT0wO2k8YXJyLmxlbmd0aDtpKyspewoJCQkgcHJlZml4U3VtICs9YXJyW2ldOwoJCQkgaWYobWFwLmNvbnRhaW5zS2V5KHByZWZpeFN1bSkpewoJCQkgCWludCBsZWZ0SW5kZXggPSBtYXAuZ2V0KHByZWZpeFN1bSk7CgkJCSAJbWF4ID0gTWF0aC5tYXgobWF4LCBpLWxlZnRJbmRleCk7CgkJCSB9IGVsc2UgCgkJCSBtYXAucHV0KHByZWZpeFN1bSxpKTsKCQl9CgkJcmV0dXJuIG1heDsKCQkKCX0KfQ==