1. 문제 및 예시

 

Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 and 1.

 


Example 1:
Input: [0,1]
Output: 2
Explanation: [0, 1] is the longest contiguous subarray with equal number of 0 and 1.


Example 2:
Input: [0,1,0]
Output: 2
Explanation: [0, 1] (or [1, 0]) is a longest contiguous subarray with equal number of 0 and 1.

 


** The length of the given binary array will not exceed 50,000.

 

 

 

2. 풀이

 

/**
 * @param {number[]} nums
 * @return {number}
 */
var findMaxLength = function(nums) {
    const map = {};
    map[0] = -1;
    let sum = 0, max = 0;
    for (let i = 0; i < nums.length; i++) {
        sum += nums[i] == 1 ? 1 : -1;
        if (sum in map) { max = Math.max(max, i - map[sum]); }
        else { map[sum] = i; }
    }
    return max;
};

** 변수를 둬서 1을 만나면 1, 아니면 -1을 더함.

** 변수값과 동일한 값을 만나면 그 사이의 하위배열은 0과 1의 수를 가져야 합니다.

 

 

 

3. 결과

 

555 / 555 test cases passed.
Status: Accepted
Runtime: 140 ms
Memory Usage: 46.2 MB

 

 

 

 

 

반응형

+ Recent posts