Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 and 1.
Example 1:
Input: [0,1] Output: 2 Explanation: [0, 1] is the longest contiguous subarray with equal number of 0 and 1.
Example 2:
Input: [0,1,0] Output: 2 Explanation: [0, 1] (or [1, 0]) is a longest contiguous subarray with equal number of 0 and 1.
Note: The length of the given binary array will not exceed 50,000.
public class Solution {
public int findMaxLength(int[] nums) {
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
map.put(0,-1);
int num0=0,num1=0;
int re=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==1) num1++;
if(nums[i]==0) num0++;
if(map.containsKey(num0-num1)){
re=Math.max(re,i-map.get(num0-num1));
}else{
map.put(num0-num1,i);
}
}
return re;
}
}