525. Contiguous Array

Medium

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.

解題

func findMaxLength(nums []int) int {
    ans := 0
    sum := 0
    prev := make(map[int]int)

    for i, val := range nums {
        if val == 1 {
            sum++
        } else {
            sum--
        }

        if sum == 0 {
            ans = i+1
        } else {
            id, ok := prev[sum]
            
            if !ok {
                prev[sum] = i 
            } else {
                ans = max(ans, i-id)
            } 
        }
    }

    return ans
}

func max(a int, b int) int {
    if a > b { return a }
    return b 
}

Last updated