# 525. Contiguous Array

#### Medium

***

Given a binary array `nums`, return *the maximum length of a contiguous subarray with an equal number of* `0` *and* `1`.

&#x20;

**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.
```

&#x20;

**Constraints:**

* `1 <= nums.length <= 105`
* `nums[i]` is either `0` or `1`.

```python
class Solution:
    def findMaxLength(self, nums: List[int]) -> int:
        d = {}
        count = 0
        result = 0
        for index in range(len(nums)):
            count += 1 if nums[index] == 1 else -1
            if count == 0:
                result = max(result, index+1)
            elif count in d:
                result = max(result, index - d[count])
            else:
                d[count] = index
        return result
```
