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

C++优选算法 904. 水果成篮

文章目录

  • 1.题目描述
    • 2.算法思路
  • 3.完整代码
    • 容器做法
    • 数组做法

1.题目描述

在这里插入图片描述
看到这种题目,总觉得自己在做阅读理解,晕了,题目要求我们在一个数组里分别找出两种数字,并统计这两种数字分别出现一共是多少。
在这里插入图片描述

2.算法思路

采用哈希表+滑动窗口的做法:

  • 定义一个哈希表方便存储,因为数组里面都是数字,将数组转换成下标可以准确的记录下来。
  • 进窗口:如果哈希表存储大小不超过2,将其存储对应下标。
  • 出窗口:如果哈希表存储大小超过2,使窗口向前移动,删除哈希表里对应的数字。
    在这里插入图片描述

3.完整代码

容器做法

class Solution {
public:int totalFruit(vector<int>& fruits) {//容器做法unordered_map<int,int> hash;int left=0,right=0,ret=-1;for(;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;}
};

数组做法

class Solution {
public:int totalFruit(vector<int>& fruits) {//数组做法int hash[114514]={0};int left=0,right=0,ret=-1,kinds=0;for(;right<fruits.size();right++){//进窗口if(hash[fruits[right]]==0)kinds++;hash[fruits[right]]++;//判断while(kinds>2){//出窗口hash[fruits[left]]--;if(hash[fruits[left]]==0)kinds--;left++;}//更新ret = max(ret,right-left+1);}return ret;}
};
http://www.lryc.cn/news/2401501.html

相关文章:

  • Python6.5打卡(day37)
  • 大中型水闸安全监测管理系统建设方案
  • Compose Multiplatform 实现自定义的系统托盘,解决托盘乱码问题
  • 风控研发大数据学习路线
  • 【设计模式】门面/外观模式
  • spring的webclient与vertx的webclient的比较
  • 贪心算法应用:埃及分数问题详解
  • 高效集成AI能力:使用开放API打造问答系统,不用训练模型,也能做出懂知识的AI
  • Qt 仪表盘源码分享
  • Python数据可视化科技图表绘制系列教程(四)
  • RPM 数据库修复
  • R语言基础知识总结(超详细整理)
  • 深入理解系统:UML类图
  • C# 中的 IRecipient
  • 大模型RNN
  • Python环境搭建竞赛技术文章大纲
  • Redisson - 实现延迟队列
  • 软件工程的定义与发展历程
  • 艾利特协作机器人:重新定义工业涂胶场景的精度革命
  • 第十三节:第五部分:集合框架:集合嵌套
  • Java设计模式之观察者模式详解
  • freeRTOS 消息队列之一个事件添加到消息队列超时怎么处理
  • 十八、【用户认证篇】安全第一步:基于 JWT 的前后端分离认证方案
  • RabbitMQ 开机启动配置教程
  • Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )
  • 组合与排列
  • 神经网络-Day45
  • 【西门子杯工业嵌入式-1-基本环境与空白模板】
  • Apache Druid
  • 使用深蓝词库软件导入自定义的词库到微软拼音输入法