Given a binary array nums
, return the maximum length of a contiguous subarray with an equal number of 0
and 1
.
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 either0
or1
.
SOLUTION:
class Solution:
def findMaxLength(self, nums: List[int]) -> int:
n = len(nums)
ctr = 0
freq = [0]
maxLen = 0
for num in nums:
if num == 1:
ctr += 1
else:
ctr -= 1
freq.append(ctr)
exists = {}
for i, f in enumerate(freq):
if f in exists:
maxLen = max(maxLen, i - exists[f])
else:
exists[f] = i
return maxLen
Top comments (0)