mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
59 lines
1.2 KiB
Python
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
|