Files
leetcode/work/1/Medium/Array/525.contiguous-array.py
T

59 lines
1.2 KiB
Python

"""
525. Contiguous Array
Difficulty: Medium
https://leetcode.com/problems/contiguous-array/
──────────────────────────────────────────────────
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.
Example 3:
Input: nums = [0,1,1,1,1,1,0,0,0]
Output: 6
Explanation: [1,1,1,0,0,0] is the longest contiguous subarray with
equal number of 0 and 1.
Constraints:
• 1 <= nums.length <= 10^5
• nums[i] is either 0 or 1.
"""
class Solution:
def findMaxLength(self, nums: List[int]) -> int:
map = {0: -1}
count = 0
longest = 0
for i, num in enumerate(nums):
count += 1 if num == 1 else -1
if count in map:
longest = max(longest, i - map[count])
else:
map[count] = i
return longest