
image.png
解法
巧妙地將0轉(zhuǎn)換成-1,利用counter記錄前綴和所在的位置,這樣兩個相同的前綴和之間的長度就是連續(xù)的相同數(shù)據(jù)的0和1.
class Solution {
public int findMaxLength(int[] nums) {
int maxLength = 0;
Map<Integer, Integer> map = new HashMap<>();
int counter = 0;
map.put(counter, -1);
for (int i = 0; i < nums.length; i++) {
int num = nums[i];
if (num == 0) {
counter += -1;
} else {
counter += 1;
}
if (map.containsKey(counter)) {
maxLength = Math.max(maxLength, i - map.get(counter));
} else {
map.put(counter, i);
}
}
return maxLength;
}
}