水果成篮-力扣

news/2024/7/22 1:17:48/文章来源:https://blog.csdn.net/why_12134/article/details/139130351

这道题目一开始的思路是利用水果的种类大于等于三,来作为滑动窗口的维护条件,使用两个key值来记录两种水果的值,当遇到第三种水果时,则将slowindex设置为slowindex-1,然后将slowindex逐渐缩小,来查找前x个相同的元素,之后重新设置key值,继续搜索。具体代码如下:

class Solution {
public:int totalFruit(vector<int>& fruits) {int slowindex = 0;int fastindex = 1;int sum= 1;int kind = 1;int key1 = fruits[slowindex];int key2 = -1;if(fruits.size() == 0){return 0;}while(fastindex < fruits.size()){if(kind < 2){if(fruits[fastindex] == key1){fastindex++;sum++;}else if(key2 < 0){key2 = fruits[fastindex];kind++;sum++;fastindex++;}}if(fruits[fastindex] == key1 || fruits[fastindex] == key2){sum++;fastindex++;}else{kind++;}while(kind >= 3){slowindex = fastindex - 1;key1 = fruits[slowindex--];while(fruits[slowindex] == key1){slowindex--;}key2 = fruits[fastindex];kind--;fastindex++;}sum = max(sum, fastindex - slowindex - 1);}return sum;}
};

但很快就出了问题,在测试用例 [3,3,3,1,2,1,1,2,3,3,4]时,预期结果为5,而我的代码输出结果却为8,在思考后得出结论:

  • sum的更新和维护,在代码1中,没有用到currentsum来记录当前的最大值,仅仅使用了一个sum来计数,导致这个sum在满足条件 fruits[fastindex] == key1 || fruits[fastindex] == key2 时便会增加,从而导致sum不断增加,fastindex - slowindex - 1 不会被取到。修改后的代码如下:
class Solution {
public:int totalFruit(vector<int>& fruits) {int slowindex = 0;int fastindex = 0;int sum = 0;int currentsum = 0;int key1 = fruits[slowindex];int key2 = -1;while(fastindex < fruits.size()) {if (fruits[fastindex] == key1 || fruits[fastindex] == key2) {currentsum++;fastindex++;} else{if (key2 == -1) {key2 = fruits[fastindex];currentsum++;fastindex++;}else{sum = max(sum, currentsum);currentsum = 2;slowindex = fastindex - 1;key1 = fruits[slowindex];while (slowindex > 0 && fruits[slowindex - 1] == key1) {currentsum++;slowindex--;}key2 = fruits[fastindex];fastindex++;}}}sum = max(sum, currentsum);return sum;}
};

这段代码就能够顺利通过了。

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

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

相关文章

Ubuntu24.04安装tabby-terminal-1.0.207并处理依赖

1 下载 tabby-terminal-1.0.207 地址&#xff1a; https://github.com/Eugeny/tabby/releases 点击show all 36 assets 选择 tabby-1.0.207-linux-x64.deb 并下载。 2 依赖下载 gconf2_3.2.6-3ubuntu6_amd64.deb gconf2-common_3.2.6-3ubuntu6_all.deb gconf-service_3.2.6-…

fpga系列 HDL: 05 阻塞赋值(=)与非阻塞赋值(<=)

在Verilog硬件描述语言&#xff08;HDL&#xff09;中&#xff0c;信号的赋值方式主要分为两种&#xff1a;连续赋值和过程赋值。每种赋值方式有其独特的用途和语法&#xff0c;并适用于不同类型的电路描述。 1. 连续赋值&#xff08;Continuous Assignment,assign 和&#xf…

【Matlab函数分析】绘图函数:colormap查看并设置当前颜色图

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

云计算-基础云架构(Fundamental Cloud Architectures)

工作负载分配架构&#xff08;Workload Distribution Architecture&#xff09; 工作负载分配架构是一种基础架构&#xff0c;它在一组相同的IT资源之间分配负载。其结构如图7.1所示&#xff08;更好的图示在教材中&#xff09;。 图&#xff1a;工作负载分配架构 这个结构中的…

Elasticsearch之入门与安装

Elaticsearch&#xff0c;简称为es&#xff0c; es是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来…

【源码】一站式Java云商城系统源码,无后门

一站式Java云商城系统源码&#xff0c;无后门&#xff0c;不是java源代码&#xff0c;是编译后的。 系统对接 手动发货 自动发货 兑 换 码 订单监控 商品监控 对象存储 邮箱提醒 加价模板 密价功能 三方支付 会员体系 财务明细 交易分析 售后服务 技术支持 服务器建议配置&a…

网易面试:手撕定时器

概述&#xff1a; 本文使用STL容器-set以及Linux提供的timerfd来实现定时器组件 所谓定时器就是管理大量定时任务&#xff0c;使其能按照超时时间有序地被执行 需求分析&#xff1a; 1.数据结构的选择&#xff1a;存储定时任务 2.驱动方式&#xff1a;如何选择一个任务并执…

微信小程序中van-tab的title(动态)根据文本内容,自适应宽度

小程序van-tab的title&#xff08;动态&#xff09;根据文本内容&#xff0c;自适应宽度 效果图代码主要调整点 效果图 代码 <van-tabs color"#00aaff" active"{{ active }}" bind:click"onTabChange"><van-tab title"7天内&quo…

mac版本Phpstudy本地环境安装Discuz教程【2024】

此方法适用于m1版本的mac版本Phpstudy本地环境安装Discuz&#xff0c;当然同样使用更高版本的mac端。网上各种安装教程参差不齐&#xff0c;根本解决不了小白的入门需求&#xff0c;以下是最新且直接明了的安装教程。 Phpstudy本地环境安装Discuz教程&#xff1a; 1、安装Phps…

Activiti7_使用

Activiti7_使用 一、Activiti7二、绘制工作流三、通过代码部署流程&#xff0c;再对流程进行实例化&#xff0c;完整运行一遍流程即可四、在springbooot中使用 一、Activiti7 为了实现后端的咨询流转功能&#xff0c;学习Activiti7&#xff0c;记录下使用的过程及遇到的问题 二…

小牛翻译:图片翻译API+语音翻译API调用,保姆级使用教程

一、小牛翻译接口简介 图片翻译API 支持格式&#xff1a;png、jpg、jpeg、bmp支持图片尺寸&#xff1a;128px*128px~2048px*2048px支持最大图片大小&#xff1a;10M支持的语种&#xff1a;中、英、日、韩、俄 语音翻译API 支持格式&#xff1a;MP3、WAV支持语音时长&#x…

根据经纬度点计算经纬度点之间的距离

根据经纬度点计算经纬度点之间的距离 根据两点经纬度坐标计算直线距离 根据经纬度点计算经纬度点之间的距离 根据经纬度计算两地之间的距离 根据两点经纬度坐标计算距离 其实看第一个就够了 根据 半正矢公式&#xff08;Haversine formula&#xff09;即可计算 本计算式选取地…

2024电激世界脉动-中国汽车品牌全球化制胜手册

来源&#xff1a;奥美Ogilvy&#xff1a; 近期历史回顾&#xff1a; 2024中国宏观经济专题报告-数据要素市场建设 2023-2024年度报告.pdf 2024制药与生化医疗技术产业链白皮书.pdf 从可再生能源到绿氢-中国投资助力埃及能源转型.pdf 2024有机旅行中国行业指引.pdf 2024中国技术…

【常用的队列总结】

文章目录 队列的介绍Queue队列的基本概念与操作队列的基本概念 常见的队列介绍非阻塞队列LinkedList:ArrayDeque:PriorityQueue: 阻塞队列ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueue DelayQueueSynchronousQueue 队列的介绍 Queue队列的基本概念与操作 在 …

常见算法(1)

1.基本查找/顺序查找 核心&#xff1a;从0索引之后挨个查找 实现代码&#xff1a; public class test {public static void main(String [] arg) throws ParseException {int[] arr {121,85,46,15,55,77,63,49};int number55;System.out.println(bashi(arr,number));}publi…

多线程基本常识

多线程的状态 在Java中&#xff0c;一个线程的生命周期有以下几种状态&#xff1a; 新建&#xff08;New&#xff09;&#xff1a;当线程对象被创建时&#xff0c;线程处于新建状态。此时线程对象存在&#xff0c;但还没有调用start()方法启动线程。 运行&#xff08;Runnable…

ssm145基于java的电脑硬件库存管理系统+jsp

电脑硬件库存管理系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对电脑硬件库存信息管理混乱&…

SQL 语言:完整性约束

文章目录 概述主键 ( Primary Key ) 约束外键&#xff08;Foreign Key&#xff09;约束属性值上的约束全局约束总结 概述 数据库的完整性是指数据库正确性和相容性&#xff0c;是防止合法用户使用数据库时向数据库加入不符合语义的数据。保证数据库中数据是正确的&#xff0c;…

React18 apexcharts数据可视化之甜甜圈图

03 甜甜圈图 apexcharts数据可视化之甜甜圈图。 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式&#xff1a; 基本甜甜圈图个性图案的甜甜圈图渐变色的甜甜圈图 面包圈 import ApexChart from react-apexcharts;export function DonutUpdate() {// 数据…

通过扩展指令增强基于覆盖引导的模糊测试

本文由Bruno Oliveira于2024年4月25日发表于IncludeSec的官方网站上。作为IncludeSec的安全研究人员&#xff0c;在他们日常的安全审计和渗透测试工作中&#xff0c;有时需要为客户开发一些模糊测试工具。在安全评估方法中使用模糊测试技术&#xff0c;可以有效地在复杂的现代化…