import java.util.HashMap;
// 0904. Fruit Into Baskets
class Solution {
public int totalFruit(int[] fruits) {
int len = fruits.length;
HashMap<Integer, Integer> slidingWindow = new HashMap<>();
int left = 0;
int right = 0;
int ans = 0;
while (right < len) {
slidingWindow.put(fruits[right], slidingWindow.getOrDefault(fruits[right], 0) + 1);
if (slidingWindow.size() < 3) {
ans = Math.max(ans, right - left + 1);
} else {
while (slidingWindow.size() > 2) {
if (slidingWindow.get(fruits[left]) == 1) {
slidingWindow.remove(fruits[left]);
} else {
slidingWindow.put(fruits[left], slidingWindow.get(fruits[left]) - 1);
}
++left;
}
}
++right;
}
return ans;
}
}
学习笔记:
这道题水果成篮去年7月17日做过,是一道滑动窗口的经典题目。
去年做的时候比较猛,直接不用hashmap,而使用四个变量维护住了窗口。
今天写的时候已经是下班到家的10点了,所以就偷懒用了hashmap。