904. 水果成蓝

news/2024/11/14 18:53:07/文章来源:https://www.cnblogs.com/hisun9/p/18540603

题目

自己第一次写的,结果超时了

class Solution
{
public:int totalFruit(vector<int> &fruits){int r = 1;int res = 1;while (r < fruits.size()){int l = r - 1;int n = 1;  // 代表不同的种类个数int second = -1;while (n <= 2 && l >= 0){if (fruits[l] == fruits[r] || fruits[l] == second)l--;else{n++;if (n <= 2){second = fruits[l]; // 记录第二个种类,第一个种类其实是fruits[r]l--;}}}res = max(res, r - l);r++;}return res;}
};

我的思想中为什么要让l--放在if (n <= 2)里面而不是外面?

因为我想的是让当r固定时,r最后指向的是从r往左走第一个不满足条件的位置(即不满足水果种类数不超过两种),然后计算的长度就是r-l

其实在写的时候就隐隐感觉会超时,因为l肯定不应该从r-1开始回溯,但是又想不到别的方法(其实想到了应该要用滑动窗口,但是具体的细节没想清楚,不知道如何下手)。

看了官方题解,果然是滑动窗口

img

代码如下:

class Solution {
public:int totalFruit(vector<int>& fruits) {int n = fruits.size();unordered_map<int, int> cnt;int left = 0, ans = 0;for (int right = 0; right < n; ++right) {++cnt[fruits[right]];while (cnt.size() > 2) {auto it = cnt.find(fruits[left]);--it->second;if (it->second == 0) {cnt.erase(it);}++left;}ans = max(ans, right - left + 1);}return ans;}
};

这个滑动窗口维持的性质:这个窗口内的水果种类不超过两种。

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

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

相关文章

Lift, Splat, Shoot, LSS代码详尽分析与解读

LSS是英伟达在ECCV2020上发表的文章《Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D》中提出的一个BEV感知算法,后续很多BEV感知算法如CaDDN、BEVDet都是在LSS的基础上实现的。本文将结合论文和代码详细解读LSS的原理。鸟…

【Playwright + Python】系列(九)Playwright 调用 Chrome 插件,小白也能事半功倍

哈喽,大家好,我是六哥!今天我来给大家分享一下如何使用playwight调用chrome插件,面向对象为功能测试及零基础小白,我尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先收藏,以免后面找不到。😎 什么是chrome插件? 就是辅助你工作生活的助手,会让你事半功倍…

基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现四

技术点:SpringBoot+SpringDataJPA+Mysql+Freemaker+Bootstrap+JS+CSS+HTML 部分功能:课程分类信息数据层Dao、课程信息数据层Dao、课程订单信息数据层Dao、课程评价信息数据层Dao、课程视频信息数据层Dao、课程小节信息数据层Dao、课程试题信息数据层Dao、课程试卷信息数据层…

极限limit

The Limit 两个重要极限\[\displaystyle\lim_{x\to 0}\frac{sinx}{x}=1 \]\[\displaystyle\lim_{x\to \infty}(1+x)^{\frac{1}{x}}=e \]间断点 1.第一类间断点 第一类间断点是指在该点附近的函数值存在,但在该点的极限不存在。具体来说,若 $ f(x) $ 在 $ x = c $ 附近的左极限…

基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现三

该系统总共24张表,代码整洁,每个功能、接口上都有注释说明。 运行环境:jdk1.8、mysql5.x、eclipse/idea、maven3.5/3.6 包远程运行的哦。 特色功能:发布课程、学习课程、分享资料、资料讨论等。 部分功能:关于我们信息实体类Entity、评论信息实体类Entity、课程资料信息实…

SpringBoot+Thyemleaf开发环境正常,打jar包发到服务器就报错Template might not exist or might not ..

前言 前几天,我在开发前后端一体的项目时候,遇到了一个巨大的坑。这个是关于SpringBoot+Thyemleaf的。现象就是,我在本地开发环境是好的,正常访问某个页面,但是到了打成jar包后,部署到服务器之后,再访问那个页面,总是报错。这个报错是类似于Template might not exist o…

推荐一个Star超过2K的.Net轻量级的CMS开源项目

推荐一个具有模块化和可扩展的架构的CMS开源项目。 01 项目简介 Piranha CMS是一个轻量级且跨平台的CMS库,专为.NET 8设计。 该项目提供多种模板,具备CMS基本功能,也有空模板方便从头开始构建新网站,甚至可以作为移动应用的后端。 是一个完全解耦的CMS,意味着我们可以使用…

Chrome如何查看保存的网站密码,如此简单!

前言 我在开发java应用的时候,一般都是使用谷歌浏览器的,也就是Chrome浏览器。这个浏览器几乎是所有浏览器里面功能最强大的浏览器。里面有很多神奇的东西。比如,它可以帮助我们记住我们登录的网站的账号密码。有时候,我们可能已经习惯了谷歌浏览器帮助我们保存的密码了,有…

现代IT基础设施管理(1):Terraform初识和小试牛刀

基础设施包括各种云,像国内的阿里云、腾讯云和华为云,国外的AWS、微软Azure云和谷歌云,还有Kubernetes和OpenStack,都可以用Terraform进行资源管理。使用基础设施即代码(Infrastructure as Code, IaC)的方式来管理基础设施,这是现代IT基础设施管理的一个重要趋势,它允许…

用一个项目把控制层、业务层、持久层将明白了,每一句话都讲的很清楚

实现一个数据库和前端的交互 三层结构持久层开发:依据前端页面的设置规划相关的sql语句,以及进行配置业务层开发:核心功能控制、业务操作以及异常的处理控制层开发:前后端连接,接受请求,处理响应完整的数据响应流程如下:前端发起请求: 前端通过浏览器或其他客户端发起H…

『模拟赛』NOIP2024加赛4

『模拟赛记录』NOIP2024加赛4Rank 给我唐完了,又名,【MX-S5】梦熊 NOIP 2024 模拟赛 1。A. 王国边缘 好像简单倍增就做完了。 由于昨天 T5 在我脑海中留下了挥之不去的印象,今天一上来看到这题就发现是一个内向基环树森林。然后被硬控硬控硬控,最后一个小点加一点优化就能过…

使用 roslyn 的 Source Generator 自动完成依赖收集和注册

roslyn Source Generator 使用案例在 使用 Hosting 构建 WPF 程序 提到,因为不使用 Stylet 默认的 IOC 容器,所以不能自动收集和注册 View/ViewModel,需要动手处理。 如果项目比较大,手动处理显然过于麻烦。这里使用 roslyn 的 Source Generator 自动完成依赖收集和注册。 …