设计出色的网站,嘉兴市做外贸网站,内蒙古高等级公路建设开发有限责任公司网站,自己怎么建网站卖东西LeetCode 904.水果成篮 思路#x1f9d0;#xff1a; 求水果的最大数目#xff0c;也就是求最大长度#xff0c;我们是单调的向前求解#xff0c;则能够想到使用滑动窗口进行解答#xff0c;可以用hash表统计每个种类的个数#xff0c;kinds变量统计当前种类#xff0c…LeetCode 904.水果成篮 思路 求水果的最大数目也就是求最大长度我们是单调的向前求解则能够想到使用滑动窗口进行解答可以用hash表统计每个种类的个数kinds变量统计当前种类left和right表示左边框和右边框且都从起点开始。 右边框先走当种类个数为0时表示这是个新种类kinds当kinds大于2则不满足题意需要删减旧的种类再移动左边框当种类个数为0时旧种类删减完成继续移动右边框重复该过程并每次循环都算一下长度直到right走到尾结束。 代码 class Solution {
public:int totalFruit(vectorint fruits) {int hash[100001] { 0 }; //针对题目数据范围优化int len 0;for(int left 0, right 0, kinds 0; right fruits.size(); right){if(hash[fruits[right]] 0) //如果哈希表对应的水果下标为0就表示有一个新的种类kinds;hash[fruits[right]]; //对应下标修改个数while(kinds 2) //当种类大于2表示不能再装了需要消除旧的种类{hash[fruits[left]]--; //对应hash表减去该种类个数if(hash[fruits[left]] 0) //当减到0表示旧的种类没有了kinds--; //种类减少left; //移动左边框}len max(len, right - left 1); //长度计算}return len;}
};return len; }};
