滑动窗口_水果成篮_C++

 

题目:

题目解析:

  • fruits[i]表示第i棵树,这个fruits[i]所表示的数字是果树的种类
  • 例如示例1中的[1,2,1],表示第一棵树 的种类是 1,第二个树的种类是2 第三个树的种类是1
  • 随后每一个篮子只能装一种类型的水果,我们有两个篮子
  • 所以最后求的是可以采摘几棵树
  • 问题转化就是求最长的连续的子数组!而且这个数组只能有两种数字!

算法原理:

根据题目的解析,我们需要知道本题需要 用于计算水果种类的 kinds  、用于存储水果的果篮 hash、用于寻找连续数组的指针 right、left

使用left指针进行固定,从最左端开始,而right指针开始移动进行水果的摘取 ,同时一边摘取水果一边将水果放入篮子内部,同时更新right和left之间的距离长度,以此来获取最大的连续子数组长度。

在水果摘取的过程中,因为篮子内部只能是两种水果,所以使用数组,把代表水果的数字作为下标,进行水果的数量记载,当遇到第三个水果时,right停止移动,表示篮子内部的两种水果的组合在当前结束了。

而当right停止移动时,left就要开始移动,因为篮子只能存在两种水果,且需要子数组连续,所以可以让left一边移动的同时一边减去指向的元素的个数,使得水果的数量减少的同时也能够将果篮内的另一个水果排除,让水果篮内部至少留下一个水果,和新种类的水果组成新的组合。

当水果蓝内的水果只剩下一种时,left停止移动,而right开始重新移动,直到遇见另一个新的水果停下,之后重复之前的操作。

代码编写: 

  • 使用一个内容巨大的数组来充当水果篮子
  • hash[f[right]]和hash[f[left]]表示的是这个元素的数量。相当于是让这个元素变成一种下标索引,在这个超级大的数组内部,进行数量的统计!
  • kinds表示一共有多少种类的元素,最多只能是2
  • 当kind大于2时我们需要减去left指向的元素的个数,同时因为种类的原因,且需要进行连续,所以在种类重新编程小于等于2之前,元素的个数都必须减少,直到某一个元素消失kind小于等于2为止!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/777225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server事务复制操作出现的错误 进程无法在“xxx”上执行sp_replcmds

SQL Server事务复制操作出现的错误 进程无法在“xxx”上执行“sp_replcmds” 无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限

术语技巧:如何格式化网页中的术语

术语是语言服务中的核心语言资产。快速处理英汉对照的术语是我们在翻译技术学习过程中需要掌握的必备技能。 通常,我们需要把在权威网站上收集到的术语放到word当中,调整正左右对齐的样式,便于打印学习或者转化为Excel表。 如何快速实现这一…

加密流量分类torch实践5:TrafficClassificationPandemonium项目更新3

加密流量分类torch实践5:TrafficClassificationPandemonium项目更新3 更新日志 代码已经推送开源至露露云的github,如果能帮助你,就给鼠鼠点一个star吧!!! 我的CSDN博客 我的Github Page博客 3/23日更新…

iOS - Runtime-API

文章目录 iOS - Runtime-API1. Runtime应用1.1 字典转模型1.2 替换方法实现1.3 利用关联对象给分类添加属性1.4 利用消息转发机制,解决方法找不到的异常问题 2. Runtime-API2.1 Runtime API01 – 类2.1.1 动态创建一个类(参数:父类&#xff0…

【Pt】马灯贴图绘制过程 02-制作锈迹

目录 一、边缘磨损效果 二、刮痕效果 三、边缘磨损与刮痕的混合 四、锈迹效果 本篇效果: 一、边缘磨损效果 将智能材质“Iron Forge Old” 拖入图层 打开“Iron Forge Old” 文件夹,选中“Sharpen”(锐化),增大“…

2010-2021年银行网点及员工信息数据

2010-2021年银行网点及员工信息数据 1、时间:2010-2021年 2、来源:整理自csmar 3、指标:银行代码、股票代码、银行中文简称、统计截止日期、分行数量、机构网点数量、其中:境内网点数量、其中:境外网点数量、在职员…

Linux集群

目录 一、什么是集群? 二、 搭建(tomcatnginxkeepalived)集群 一、JDK安装 二、Tomcat安装 三、Nginx 3.1、什么是Nginx? 3.2、下载Nginx 3.3、安装 四、搭建NginxTomcat的实现集群 配置nginx.comf文件 五:Nginx搭建图片服务器 …

【Java程序设计】【C00392】基于(JavaWeb)Springboot的校园生活服务平台(有论文)

基于(JavaWeb)Springboot的校园生活服务平台(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过…

VUE 实现文件夹上传(保留目录结构)

代码:https://gitee.com/xproer/up6-vue-cli 1.引入up6组件 2.配置接口地址 接口地址分别对应:文件初始化,文件数据上传,文件进度,文件上传完毕,文件删除,文件夹初始化,文件夹删除&…

2024年做视频号小店是不是明智之举?这篇文章告诉你答案

大家好,我是电商糖果 视频号自从去年电商的知名度打开之后,不少朋友都盯上这块肥肉。 要知道现在可是短视频电商的时代,抖音,快手靠做电商赚了不少钱。 视频号又怎么会放过这次的风口呢? 也有不少想做电商的朋友问…

灯哥驱动器端口讲解----foc电机驱动必看

CS:是电流采样的引脚,三项采样电流,现在只给了两路,另外一路算出来就行了 in:三项电流输入,驱动电机使用。 en:没有用 SDA,SCL:I2C的引脚用来读取编码器的计数值 tx,rx:引出来了一路串口,没有用…

西安 专业nft开发NFT寄售-NFT抢购-NFT盲盒-NFT空投

在数字化时代的今天,非同质化代币(NFT)正成为数字资产领域的新宠。作为区块链技术的一种应用,NFT 赋予数字资产独一无二的身份和价值,从而在艺术、游戏、音乐、收藏品等领域掀起了一股热潮。西安,这座千年古…

LeetCode-热题100:42. 接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入: height [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 解释: 上面是由数组 [0,1,0,2,1,…

2024社工考试报名详细流程来啦✅

2024社工考试报名详细流程来啦✅ ⏰社工报名时间:4月1日-4月18日 👇🏻2024年社工报名流程 1、打开人事考试网,点击左侧【网上报名】 2、没有用户名的点击新用户注册,有用户名的直接输入用户名密码登录即可。 3、注册好…

24计算机考研调剂 | 【官方】北京科技大学

北京科技大学 考研调剂招生信息 招生专业: 085404(计算机技术) 081200(计算机科学与技术) 调剂要求:(调剂基本分数) 我中心将在教育部“全国硕士生招生调剂服务系统”&#xff08…

It takes two (搜索)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 3 4 AAAO AAAA AAAA 输出 NO 思路: 根据题目意思,如果存在的 A 联通不可以成为 矩形,输出 NO,否则输出 YES 这道题看数据范…

网络套接字补充——UDP网络编程

五、UDP网络编程 ​ 1.对于服务器使用智能指针维护生命周期;2.创建UDP套接字;3.绑定端口号,包括设置服务器端口号和IP地址,端口号一般是2字节使用uint16_t,而IP地址用户习惯使用点分十进制格式所以传入的是string类型…

中国国际通信大会2024|中国通信展览会|通信展览会

中国国际通信大会2024|中国通信展览会|通信展览会 中国国际信息通信展览会(ICT展)是亚太地区最具影响力的信息通信技术盛会之一。每年一度的ICT展汇聚了来自全球各行各业的专业人士,为各领域的科技公司、创新企业以及技术爱好者们提供一个难得…

包子凑数(蓝桥杯,闫氏DP分析法)

题目描述: 小明几乎每天早晨都会在一家包子铺吃早餐。 他发现这家包子铺有 N 种蒸笼,其中第 i 种蒸笼恰好能放 Ai 个包子。 每种蒸笼都有非常多笼,可以认为是无限笼。 每当有顾客想买 X 个包子,卖包子的大叔就会迅速选出若干笼…

2024 ccfcsp认证打卡 2023 03 02 垦田计划

import java.util.*;public class Main {public static void main(String[] args) {Scanner input new Scanner(System.in);int N 100100; // 定义一个较大的常数Nlong[] t new long[N]; // 存储任务的耗时long[] c new long[N]; // 存储每块区域投入资源的数量long[] c…