Leetcode904:水果成篮

这道题首先要读懂题意:寻找最多包含两种元素的最长子串,返回其长度

本文借助滑动窗口的思想,但是不同于Leetcode209.长度最小的子数组

代码如下:

class Solution {
    public int totalFruit(int[] fruits) {
        int left=0;
        int subL=0;
        Map cnt = new HashMap();
        for(int right=0;right2){
                cnt.put(fruits[left],cnt.get(fruits[left])-1);
                if(cnt.get(fruits[left])==0){
                    cnt.remove(fruits[left]);
                }
                       left++;
            }
            subL=Math.max(subL,right-left+1);
        }
        return subL;
    }
}

Map.getOrDefault的语法可看此处https://blog.csdn.net/weixin_44689901/article/details/135090501?spm=1001.2014.3001.5502

你可能感兴趣的:(java,算法,数据结构,leetcode)