LeetCode 525 Contiguous Array (hash)
程序员文章站
2022-03-08 16:44:10
...
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.
Note: The length of the given binary array will not exceed 50,000.
题目链接:https://leetcode.com/problems/contiguous-array/
题目分析:遇0加1,遇1减1,求前缀和,前缀和值相等的一段区间0和1的个数相同,用map记录位置即可
53ms,击败43%
class Solution {
public int findMaxLength(int[] nums) {
int n = nums.length;
if (n == 1) {
return 0;
}
Map<Integer, Integer> mp = new HashMap<>();
int[] sum = new int[n + 1];
for (int i = 1; i <= n; i++) {
sum[i] = sum[i - 1] + (nums[i - 1] == 0 ? 1 : -1) ;
}
int ans = 0;
mp.put(0, 0);
for (int i = 1; i <= n; i++) {
if (!mp.containsKey(sum[i])) {
mp.put(sum[i], i);
} else {
ans = Math.max(ans, i - mp.get(sum[i]));
}
}
return ans;
}
}
未完待续
推荐阅读
-
Leetcode525-Contiguous Array
-
LeetCode 525. Contiguous Array
-
LeetCode:525Contiguous Array
-
[leetcode] 525. Contiguous Array
-
[leetcode]-525. Contiguous Array
-
LeetCode 525. Contiguous Array
-
LeetCode 525: Contiguous Array
-
LeetCode.525 Contiguous Array
-
Leetcode 525. Contiguous Array
-
[leetcode] 525. Contiguous Array