滑动窗口 | 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;
    }
};

你可能感兴趣的:(算法,leetcode,哈希算法,深度优先)