滑动窗口 | 904.水果成篮

滑动窗口 | 904.水果成篮,第1张

一、题目

二、题解

滑动窗口:

  • 当窗口内的水果种类小于等于二时,移动窗口右边界
  • 当窗口内的水果种类大于二时,将窗口左边界的水果值减一,直到窗口内水果数小于等于二
三、代码
class Solution
{
public:
    int totalFruit(vector<int> &fruits)
    {
        int result = 0;
        unordered_map<int,int> mp; 
        int i = 0;
        for(int j = 0; j < fruits.size(); j++){
            mp[fruits[j]]++;
            while(mp.size() > 2){
                mp[fruits[i]]--;
                if(mp[fruits[i]] == 0){
                    mp.erase(fruits[i]);
                   
                }
                 i++;
            }
            result = j - i + 1 > result? j - i + 1 : result;   
        }
         return result;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1498723.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存