diff --git a/work/1/Medium/Array/525.contiguous-array.py b/work/1/Medium/Array/525.contiguous-array.py new file mode 100644 index 0000000..ca5885a --- /dev/null +++ b/work/1/Medium/Array/525.contiguous-array.py @@ -0,0 +1,58 @@ +""" +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