Given a binary array nums, return the maximum length of a contiguous subarray with an equal number of0and1.
Example 1:
**Input:** nums = [0,1]
**Output:** 2
**Explanation:** [0, 1] is the longest contiguous subarray with an equal number of 0 and 1.
Example 2:
**Input:** nums = [0,1,0]
**Output:** 2
**Explanation:** [0, 1] (or [1, 0]) is a longest contiguous subarray with equal number of 0 and 1.
Constraints:
1 <= nums.length <= 105
nums[i] is either 0 or 1.
ac
classSolution {publicintfindMaxLength(int[] nums) {// edge casesif (nums ==null||nums.length==0) return0;Map<Integer,Integer> map =newHashMap<>();map.put(0,-1);int sum =0, max =0;for (int i =0; i <nums.length; i++) { sum += nums[i] ==1?1:-1;if (map.containsKey(sum)) { max =Math.max(max, i -map.get(sum)); } else {map.put(sum, i); } }return max; }}/*1) maintain sum, meet 1 +1, meet 0 -1; 2) if current sum appear before, then the gap is the subarray we want, calculate the length; 3) put new sum-value in map;*/