水果成篮-力扣

这道题目一开始的思路是利用水果的种类大于等于三,来作为滑动窗口的维护条件,使用两个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.mzph.cn/pingmian/14253.shtml

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

相关文章

【Redis7】Redis持久化机制之RDB

文章目录 1.RDB简介2.RDB配置触发设置3.RDB的优缺点4.如何检查修复RDB文件5.如何禁用RDB6.RDB参数优化7.总结 1.RDB简介 Redis持久化机制中的RDB&#xff08;Redis Database&#xff09;是一种将Redis在某个时间点的数据以快照形式保存到磁盘上的方法。 原理&#xff1a;RDB通…

Node.js版本管理与npm镜像源管理

一、nvm —— node的版本管理工具 1.安装 nvm Windows 使用 nvm-windows点击跳转下载网站。 按照图示操作步骤下一步即可&#xff0c;对于下载位置推荐不要C盘任意即可 2.查看可用的 Node.js 版本&#xff1a; nvm list available #显示所有可以下载的版本3.安装特定的…

自动化证书管理|如何通过可管理的ACME为“90天SSL证书”做好准备?

SSL证书在保护组织的Web通信安全方面发挥着至关重要的作用。最近的趋势表明&#xff0c;在增强安全性诉求的推动下&#xff0c;SSL证书有效期逐渐缩短。这一变化需要组织耗费更多的时间和资源来进行证书更新工作&#xff0c;为了降低潜在风险并简化流程&#xff0c;自动化证书管…

windows、mac、linux中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换

文章目录 在工作中&#xff0c;我们可能同时在进行2个或者多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;进而不同项目必须依赖不同版本的NodeJS运行环境&#xff0c;这种情况下&#xff0c;对于维护多个版本的node将会是一件非常麻烦的事情&#xff0c;nvm就是…

python查找内容在文件中的第几行(利用了滑动窗口)

def find_multiline_content(file_path, multiline_content):with open(file_path, r) as file:# 文件内容file_lines file.readlines()# 待检测内容multiline_lines multiline_content.strip().split(\n)# 待检测内容总行数num_multiline_lines len(multiline_lines)matchi…

安装测缝计安装事项详解

在建筑和工程领域&#xff0c;测量缝隙和裂缝的准确性对于工程质量和安全性至关重要。测缝计作为一种专业的测量工具&#xff0c;能够帮助工程师和施工人员准确测量和监测建筑结构的缝隙情况&#xff0c;进而采取合适的修复和加固措施&#xff0c;保证建筑物的稳定性和安全性。…

Vs Code插件位置:

Vs Code插件位置&#xff1a; C:\Users\dell.vscode\extensions

PCIe协议之-Flow Control基础

✨前言&#xff1a; Flow Control即流量控制&#xff0c;这一概念起源于网络通信中。PCIe总线采用Flow Control的目的是&#xff0c;保证发送端的PCIe设备永远不会发送接收端的PCIe设备不能接收的TLP&#xff08;事务层包&#xff09;。也就是说&#xff0c;发送端在发送前可以…

Flat Ads获广东电视台报道!CEO林啸:助力更多企业实现业务全球化增长

近日,在广州举行的第四届全球产品与增长展会(PAGC2024)上,Flat Ads凭借其卓越的一站式全球化营销和创新的变现方案大放异彩,不仅吸引了众多业界目光,同时也在展会上斩获了备受瞩目的“金帆奖”,展现了其在全球化营销推广领域的卓越实力和专业服务。 在大会现场,Flat Ads的CEO林…

XMR交易所对接方案

交易所对接 XMR 充币 用户充币地址生成 使用 subaddress 即可 充币数据监测 monero-wallet-rpc 的API文档: https://web.getmonero.org/resources/developer-guides/wallet-rpc.html 步骤1 : 使用 monero-wallet-cli 的以下选项生成 incoming-only钱包: --generate-from-v…

# 全面解剖 消息中间件 RocketMQ-(2)

全面解剖 消息中间件 RocketMQ-&#xff08;2&#xff09; 一、RocketMQ – RocketMQ 各角色介绍 1、RocketMQ 各角色介绍 Producer : 消息的发送者; 举例:发信者。Consumer : 消息接收者; 举例:收信者。Broker : 暂存和传输消息; 举例:邮局。NameServer : 管理 Broker; 举例…

css动画之hamburgers

动效1 代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><div><label class"hamburger"><input type"checkbox"><…

BGP选路规则实验

实验拓扑及要求如下 注意&#xff1a; 在完成要求时&#xff0c;默认区域内IGP搭建完成&#xff0c;IBGP和EBGP的对等体关系建立完成 结果演示如下 IBGP内部搭建&#xff1a;使用OSPF IBGP与EBGP对等体建立 要求一&#xff1a;PreVal策略 PV属性默认值为0&#xff0c;规则是…

2024年ai知识库:特点、应用与搭建

随着科技的进步和企业的需要&#xff0c;ai知识库逐渐走进大众的视野并深受企业的青睐&#xff0c;掀起了搭建ai知识库的热潮。LookLook同学就来简单介绍一下关于ai知识库的特点、应用与发展趋势&#xff0c;带你了解2024年的ai知识库。 一、ai知识库的定义与特点 ai知识库是结…

CentOS7 部署单机版 elasticsearch

一、环境准备 1、准备一台系统为CentOS7的服务器 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 2、创建新用户&#xff0c;用于elasticsearch服务 # elastic不允许使用root账号启动服务 [rootlocalhost ~]# useradd elastic [rootlo…

SHA1获取

这里写目录标题 JDK获取uniapp开发Dcould获取 JDK获取 一、下载jdk 链接: http://www.oracle.com/ 二、安装直接下一步下一步 三、配置环境变量 先新增变量JAVA_HOME变量值为C:\devUtils\jdk (jdk安装路径位置)再配置Path(%JAVA_HOME%\bin) 四、创建SHA1安全证书 win r输入cmd…

Day47 打家劫舍123

198 打家劫舍 题目链接&#xff1a;198.打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;…

【运维心得】双WAN配置的一个误区

目录 双WAN配置及优势 实际案例 解决之道 最后总结 双WAN配置及优势 什么是双WAN配置&#xff0c;这里就不多赘述&#xff0c;简单的说&#xff0c;首先你要有一台支持双WAN口的路由器&#xff0c;目前大多数企业级路由器都具备了这个功能。甚至有些家用路由器也有此类功能…

搭建淘宝扭蛋机小程序:技术选型与最佳实践

随着移动互联网的快速发展&#xff0c;小程序作为一种轻量级应用&#xff0c;以其无需安装、即用即走的特点&#xff0c;受到了广大用户的喜爱。在电商领域&#xff0c;淘宝作为国内最大的电商平台之一&#xff0c;也积极拥抱小程序技术&#xff0c;为用户提供更加便捷、个性化…

2024 电工杯高校数学建模竞赛(A题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024电工杯数学建模竞赛&#xff08;B题&#xff09;的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有详尽的建模过程和解…