fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. Scanner sc = new Scanner(System.in);
  13. int size = sc.nextInt();
  14.  
  15. int[] arr =new int[size];
  16.  
  17. for(int i = 0;i<size;i++){
  18. arr[i] = sc.nextInt();
  19. }
  20.  
  21.  
  22.  
  23. int result = maxLength(arr);
  24. System.out.println(result);
  25.  
  26.  
  27. }
  28. public static int maxLength(int arr[]) {
  29. HashMap<Integer, Integer> present = new HashMap<>();
  30.  
  31. int n = arr.length;
  32. int[] prefixSum = new int[n];
  33. int sum = 0;
  34.  
  35.  
  36. for (int i = 0; i < n; i++) {
  37. sum += arr[i];
  38. prefixSum[i] = sum;
  39. }
  40. present.put(0, -1);
  41. int maxLongestSubArray = 0;
  42.  
  43.  
  44. for (int i = 0; i < n; i++) {
  45. int num = prefixSum[i];
  46.  
  47.  
  48. if (num == 0) {
  49. maxLongestSubArray = Math.max(maxLongestSubArray, i + 1);
  50. }
  51.  
  52.  
  53. if (present.containsKey(num)) {
  54. int currentLongestSubArray = i - present.get(num);
  55. maxLongestSubArray = Math.max(currentLongestSubArray, maxLongestSubArray);
  56. } else {
  57.  
  58. present.put(num, i);
  59. }
  60. }
  61.  
  62. return maxLongestSubArray;
  63. }
  64. }
Success #stdin #stdout 0.11s 56532KB
stdin
5
2 -2 4 0 -4
stdout
5