Daily LeetCode – day0080 0904. Fruit Into Baskets

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。


关于樊轶群

一个善良的理想主义者。
此条目发表在每日LeetCode分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注