DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

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.

Constraints:

  • 1 <= nums.length <= 105
  • nums[i] is either 0 or 1.

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
Enter fullscreen mode Exit fullscreen mode

Top comments (0)