当前位置: 首页 > article >正文

LeetCode 904.水果成篮

LeetCode 904.水果成篮

image-20241124190616838

思路🧐:

  求水果的最大数目,也就是求最大长度,我们是单调的向前求解,则能够想到使用滑动窗口进行解答,可以用hash表统计每个种类的个数,kinds变量统计当前种类,left和right表示左边框和右边框,且都从起点开始。

  右边框先走,当种类个数为0时,表示这是个新种类,kinds++,当kinds大于2,则不满足题意,需要删减旧的种类,再移动左边框,当种类个数为0时,旧种类删减完成,继续移动右边框,重复该过程并每次循环都算一下长度,直到right走到尾结束。

image-20241124191710576

代码🔎:

class Solution {
public:
    int totalFruit(vector<int>& 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;

}

};


![image-20241124191735745](https://img-blog.csdnimg.cn/img_convert/6b419397b927e6f34c470b60ba8ea3fd.png)

http://www.kler.cn/a/408224.html

相关文章:

  • 从零开始-VitePress 构建个人博客上传GitHub自动构建访问
  • Oracle 19c Rac + ADG搭建(源库:RAC,目标库FS)
  • 基于物联网设计的人工淡水湖养殖系统(华为云IOT)_253
  • VMware虚拟机Ubuntu桥接模式突然连接不上网络解决办法
  • CKA认证 | Day2 K8s内部监控与日志
  • 在Unity环境中读取Excel配置文件(入门)
  • YOLOv10改进,YOLOv10添加KANConv卷积,CVPR2024
  • Spring Boot OA:打造现代化企业办公环境
  • Web 端语音对话 AI 示例:使用 Whisper 和 llama.cpp 构建语音聊天机器人
  • 4.1_未授权漏洞
  • DataGrip 连接 Redis、TongRDS
  • 【FPGA-MicroBlaze】串口收发以及相关函数讲解
  • docker搭建私有的仓库
  • Python和R基因组及蛋白质组学和代谢组学
  • Java技术分享
  • 运维Tips:Docker或K8s集群拉取Harbor私有容器镜像仓库配置指南
  • 《泰拉瑞亚》PC+手机版安装教程
  • ubuntu 安装 yum 无法定位问题
  • 云计算-华为HCIA-学习笔记
  • 经验笔记:Git 中的远程仓库链接及上下游关系管理
  • mybatis学习(一)
  • Transformer详解及衍生模型GPT|T5|LLaMa
  • 写时复制,读时加载
  • 从零开始学习数据库 day0(基础)
  • JavaEE-线程安全专题
  • Tessy学习笔记—一些零散知识点