欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > 904.水果成篮

904.水果成篮

2025/10/20 3:13:41 来源:https://blog.csdn.net/zengxuan151168/article/details/142797068  浏览:    关键词:904.水果成篮

滑动窗口升级版,蒟蒻阵亡了。。。

题目:904. 水果成篮 - 力扣(LeetCode)

思路:最关键的是用哈希储存当前水果id的可采摘数目

代码:

class Solution {
public:int totalFruit(vector<int>& fruits) {//由题意,转化问题为:求只包含两种元素的最长连续子序列//滑动窗口法int i = 0; //滑动窗口左边界int sub_len = 0; //子序列长度int fruit_counter = 0; //篮子中的水果种类数int len = fruits.size();unordered_map<int, int> basket; //创建篮子for (int j = 0; j < len; j++) {if (basket[fruits[j]] == 0) {fruit_counter++;}basket[fruits[j]]++; //因为value是int属性、初始值为0,相当于将fruits的元素作为key依次放入哈希表basket中,并更新对应value(表示该key的出现次数)//如果篮子中的水果数目超过两种,则需要移动左边界,对应从子序列中删去水果的value要减一for (;fruit_counter > 2; i++) {basket[fruits[i]]--;//若对应水果key的value变为0,说明篮子里已经没有这种水果了,水果种类要对应变化if (basket[fruits[i]] == 0) {fruit_counter--;}}//在第二个for循环结束后,篮子中的水果一定满足题意要求,此时更新子序列长度sub_len = max(sub_len, j - i + 1);}return sub_len;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词