ID | Title | Difficulty | |
---|---|---|---|
Loading... |
525. Contiguous Array
Medium
LeetCode
Array, Hash Table, Prefix Sum
Problem
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 <= 10^5
- nums[i] is either 0 or 1.
Code
class Solution {
public int findMaxLength(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
int maxLen = 0;
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += (nums[i] == 1 ? 1 : -1);
if(sum == 0) {
maxLen = Math.max(maxLen, i + 1);
}
if (map.containsKey(sum)) {
maxLen = Math.max(maxLen, i - map.get(sum));
}
if(!map.containsKey(sum)) {
map.put(sum, i);
}
}
return maxLen;
}
}
按 <- 键看上一题!
524. Longest Word in Dictionary through Deleting
按 -> 键看下一题!
526. Beautiful Arrangement