⭐️
# 題目敘述
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.
# 解題思路
# Solution
import java.util.HashMap; | |
import java.util.Map; | |
class Solution { | |
public int findMaxLength(int[] nums) { | |
int len = nums.length; | |
int[] prefixSum = new int[len + 1]; | |
for (int i = 1; i <= len; i++) { | |
prefixSum[i] = prefixSum[i - 1] + (nums[i - 1] == 0 ? -1 : 1); | |
} | |
int max = 0; | |
Map<Integer, Integer> map = new HashMap<>(); | |
for (int i = 0; i <= len; i++) { | |
if (map.containsKey(prefixSum[i])) { | |
max = Math.max(max, i - map.get(prefixSum[i])); | |
} else { | |
map.put(prefixSum[i], i); | |
} | |
} | |
return max; | |
} | |
} |
單字
** **
!! !!
片語 & 搭配詞
!! !!