本文主要是介绍Leet code 904 水果成篮,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解题思路:滑动窗口
创建hash表记录水果的种类和数量
两个指针left 和 right 从数组起始位置开始滑动,right在循环内++
hash[fruits[right]]++ 进窗口
然后判断 hash表中的种类是否大于2
一旦大于2就要想办法出窗口 出窗口需要将hash表中种类重回2种 这时候就要动用left指针
然后更新结果
代码如下
class Solution {
public:int totalFruit(vector<int>& fruits) {unordered_map<int,int> hash;//前面存种类 ,后面存数量int ret=0;for(int left=0,right=0 ;right<fruits.size();right++){hash[fruits[right]]++;//进窗口while(hash.size()>2){hash[fruits[left]]--;if(hash[fruits[left]]==0)//出窗口{hash.erase(fruits[left]);}left++;}ret=max(ret,right-left+1);}return ret;}
};
这篇关于Leet code 904 水果成篮的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!