package com.interview.books.ninechapter;
import java.util.HashMap;
/**
* Created_By: stefanie
* Date: 14-12-12
* Time: 下午4:41
*/
public class NC10_EqualSubarray {
public int longest(int[] array){
HashMap<Integer, Integer> sumMap = new HashMap<>();
int max = 0;
int sum = 0;
for(int i = 0; i < array.length; i++){
sum += array[i] == 0? -1 : 1;
if(sum == 0) max = Math.max(max, i + 1);
else if(sumMap.containsKey(sum)){
int len = i - sumMap.get(sum);
max = Math.max(max, len);
} else {
sumMap.put(sum, i);
}
}
return max;
}
public static void main(String[] args){
NC10_EqualSubarray finder = new NC10_EqualSubarray();
int[] array = new int[]{0,1,1,0,1,0,1,0,0};
System.out.println(finder.longest(array)); //8
array = new int[]{0,1,1,0,1,0,1,0,0,1};//10
System.out.println(finder.longest(array));
array = new int[]{0,1,1,0,1,1,1,1,0};
System.out.println(finder.longest(array));//4
}
}