mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 13:12:44 +00:00
53 lines
1.3 KiB
Plaintext
53 lines
1.3 KiB
Plaintext
---
|
|||
|
|
title: '525. Contiguous Array'
|
||
|
|
description: Given a binary array nums, return the maximum length of a contiguous subarray with an equal number of 0 and 1
|
||
|
|
icon: dot
|
||
|
|
topics:
|
||
|
|
- { name: "Array", slug: "array" }
|
||
|
|
- { name: "Hash Table", slug: "hash-table" }
|
||
|
|
- { name: "Prefix Sum", slug: "prefix-sum" }
|
||
|
|
issue: "https://github.com/prdlk/leetcode/issues/39"
|
||
|
|
sidebar:
|
||
|
|
label: 'Contiguous Array'
|
||
|
|
badge: 'Medium'
|
||
|
|
---
|
||
|
|
|
||
|
|
### 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.
|
||
|
|
|
||
|
|
## Solution
|
||
|
|
|
||
|
|
```py
|
||
|
|
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
|
||
|
|
```
|