[Sliding window] 水果成篮-双指针

C++ 水果分类识别matlab代码,有详细的注释,matlab demo C++ 水果分类识别matlab代码,有详细的注释,matlab demo。 水果的分类识别,有详细的注释,希望能给你带来帮助。 水果分类 在水果相互无遮挡的条件下,按照形状、大小、颜色等特征区分香蕉、苹果、梨等水果。代码有相应的注释,还算是比较不错的示例。要解决更实际的问题,还需要进一步挖掘。 立即下载

0. 题干

leetcode 904:
在一排树中,第 i 棵树产生 tree[i] 型的水果。
你可以从你选择的任何树开始,然后重复执行以下步骤:

  1. 把这棵树上的水果放进你的篮子里。如果你做不到,就停下来。
  2. 移动到当前树右侧的下一棵树。如果右边没有树,就停下来。
    请注意,在选择一颗树后,你没有任何选择:你必须执行步骤 1,然后执行步骤 2,然后返回步骤 1,然后执行步骤 2,依此类推,直至停止。

你有两个篮子,每个篮子可以携带任何数量的水果,但你希望每个篮子只携带一种类型的水果。
用这个程序你能收集的水果总量是多少?

示例 1:

输入:[1,2,1]
输出:3
解释:我们可以收集 [1,2,1]。
示例 2:

输入:[0,1,2,2]
输出:3
解释:我们可以收集 [1,2,2].
如果我们从第一棵树开始,我们将只能收集到 [0, 1]。
示例 3:

输入:[1,2,3,2,2]
输出:4
解释:我们可以收集 [2,3,2,2].
如果我们从第一棵树开始,我们将只能收集到 [1, 2]。
示例 4:

输入:[3,3,3,1,2,1,1,2,3,3,4]
输出:5
解释:我们可以收集 [1,2,1,1,2].
如果我们从第一棵树或第八棵树开始,我们将只能收集到 4 个水果。

提示:

1 <= tree.length <= 40000
0 <= tree[i] < tree.length

注意这里题目稍微有点难理解,比如那个[0,1,2,2]的例子,tree[0]=0、tree[1]=1、tree[2]=2、tree[3]=2,因为只有两个篮子,一个篮子只能存一种水果,所以要么存0、1;要么存1、2、2;题干说的两个步骤,停下来的意思是程序直接结束了

1. 代码如下,写了很详细的注释

class Solution{
public:
	int totalFruit(vector<int>& tree) {
		int left=0,mid=0,right=0;
		int len=tree.size();

		int sum=0; //统计最终的返回值
	
		if (len<2)   //数组长度小于2,还解个锤子,直接返回数组长度
			return len;
		
		for (; right<len-1; right++) // 找到第二种树的位置
			if( tree[right]!= tree[right+1] ) //此时的right+1值即为第二种树开始位置
			break;
		
		mid= ++right; //此时的mid存储第二种树的位置
		              //运行之后,right的值默认为第二种树开始的位置
		
		
		//以下for循环为重点处理
		
		for (; right < len; right++){
		
				if ( tree[right]!= tree[mid] && tree[right]!= tree[left] ) {
				//找到第三种树
					sum = max(sum, right-left); //每次运行之后的right即为下一种树的开头,
					//所以直接减去left即可.
					
					mid = right; //存储此时第三种树的位置
					
					left= right -1; //既然之前找到了第三种树,此时减一即为第二种树的位置
					
					while ( tree[left] == tree[left-1] )
						//通过这种方式找到前面一种树第一次出现的位置
						left--;
				}

		}
		
		right--;  //for循环运行之后,right=len,减一避免下面数组越界
		
		if (left==0)
			return len; //如果left=0,即,left[2]=left[1],left[1]=left[0]等. 
		                //表明树的种类一定是小于三种的,因为如果树的种类大于三种,
						//由于while ( tree[left] == tree[left-1] )
						//left一定会卡在中间某个位置,不会在0
		if (tree[right] == tree[mid] || tree[right] == tree[left])
		//若数组的最后一位不是新的树,即不经过重点for循环sum处理,for (; right < len; right++){
			//要更新sum值
			return max(sum, right-left+1); //+1的原因是right--,
			//此时right不是同类树的下一个下标,而是同类树的最后一个下标,所以要+1
			
			return sum;
		

	
	}
};

在这里插入图片描述

OVER! 感谢阅读。

水果超市管理系统 水果超市管理系统,C语言代码,实现八个功能,课程设计作业 立即下载

相关推荐

水果工厂代码

利用了工场模式和单键模式,欢迎指教,本人刚学

C++,定义一个水果的类。要求:(1)定义3个私有的数据成员,分别为水果编号、水果名称、进价。(2)定义6个公有的成员函数,分别用于设置水果编号、水果名称、进价;显示输出水果编号、水果名称、进价。

C++,定义一个水果的类。要求:(1)定义3个私有的数据成员,分别为水果编号、水果名称、进价。(2)定义6个公有的成员函数,分别用于设置水果编号、水果名称、进价;显示输出水果编号、水果名称、进价。设置水果编号、水果名称、进价的函数体定义在类内,显示输出水果编号、水果名称、进价定义在类外。(3)定义水果类的对象,调用水果类中公有的成员函数。,并使用公有成员函数设置水果编号、水果名称和进价。函数在类外定义,用于显示输出水果编号、水果名称和进价。用于设置水果编号、水果名称和进价。来显示输出水果的相关信息。

570

水果篮-第1部分

水果篮-第1部分

904.水果成篮(C++写法)

西安疫情终于开始有缓解的趋势啦!希望可以回家过年吧。关在宿舍没事做开始刷算法题,努力提升 up!up!up! 题目描述 你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果: 你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。 你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括.

m0_56369204的博客 1536

永磁同步电机矢量控制——从三相静止坐标系到d-q坐标系的数学转换

本文深入解析了永磁同步电机矢量控制的核心——从三相静止坐标系到d-q旋转坐标系的数学转换。通过Clark变换和Park变换,将复杂的三相交流系统解耦为易于控制的直流量,从而实现对电机转矩和磁场的独立、精准控制。文章结合物理图像与工程实践,详细阐述了坐标变换的原理、公式推导及其在磁场定向控制(FOC)中的关键作用。

weixin_29294395的博客 117

基于STM32与MPU6050的实时姿态检测系统设计与实现(源码+硬件解析)

本文详细介绍了基于STM32单片机与MPU6050传感器的实时姿态检测系统设计与实现。通过硬件解析、传感器校准、卡尔曼滤波算法和欧拉角计算,实现高精度姿态检测。提供完整源码和调试技巧,适用于无人机、平衡车等嵌入式开发项目,解决噪声干扰和数据漂移等常见问题。

jupi8的博客 494

C++:Leetcode-滑动窗口-904.水果成篮

重点掌握滑动窗口思想,左指针和右指针分别代表的含义 重点掌握熟悉利用**哈希表**进行统计和查重。 面对这种同类型数量统计问题或者是查重问题,哈希表是不二之选

Bellwen的博客 806

AI大模型驱动的智能座舱研发体系重构

AI大模型正重构智能座舱研发体系的核心逻辑,需以场景认知为起点、混合架构为支柱、AI原生生态为落脚点。未来,研发体系需持续融合认知科学、边缘计算与开放生态理论,推动座舱从“工具”进化为“伙伴”。

我的专栏 1916

C++: 水果

题目:愁大侠经营着一个不大的水果店,他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样愁大侠就可以很容易掌握所有水果的销售情况了. 输入:第一行正整数N(0<N<=10),表示有N组测试数据。每组测试数据的第一行是一个整数M(0<M<=100),表示有M次成功的交易。其后有M行数据,每行表示一次交易,由水果名称(小写字母组成,长度不超过80),水果产地(小写字母组成,长度不超过80)和交易的水果数目(正整数,不超过100)组成。 输出:对于每一组测试数

Qihonghao_的博客 2514

多机器人协同:水下机器人集群的分布式控制与ROS仿真实践

本文探讨了多自主水下机器人(AUV)集群的分布式控制方法,重点分析了欠驱动6自由度AUV模型的反馈线性化技术。通过ROS/Gazebo仿真平台,详细介绍了系统架构设计、通信延迟补偿策略及环境扰动应对方案,为水下协同作业提供实用参考。

jupi8的博客 687

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

weixin_42412049的博客 2297

水果店

水果店 小明经营着一个不大的水果店(似曾相识哦~),只销售苹果、香蕉和桔子。为了促销,小明制定了如下定价策略: 苹果:按斤论价,每斤P元,买W斤,则需支付W*P元。 香蕉:半价,每斤P元,买W斤,则需支付W/2*P元。 桔子:按斤论价,每斤P元,买W斤。如果W>10,则打半价,即需支付W*P/2元; 否则如果W>5,则打八折,即需支付W*P*0.8元;其他情况不打折,即需支付W*P元。 请用C++来计算某个顾客采购的水果的总价。该程序至少应有: Fruit类:是个抽象类,是Apple、Bana

qq_45830912的博客 1458

第3.1.3章 机器人第三方库实战总结:ROS 2 入门实战及和ROS1的对比,打通机器人开发的任督二脉

本文针对机器人SLAM开发中第三方库的学习痛点,重点介绍ROS 2在SLAM中的应用。文章首先对比ROS 1与ROS 2的核心差异,梳理ROS 2知识图谱,包括节点、话题、服务等核心概念。通过实战项目演示如何构建激光SLAM节点,结合代码详解运行流程。最后给出学习建议,强调动手实践的重要性,帮助开发者快速掌握ROS 2在SLAM开发中的关键应用。

行知SLAM 180

滑动窗口 sliding window

滑动窗口解题思路/套路

jiayue的博客 484

乐鑫科技 EchoEar 喵伴修改自定义唤醒词的方法 EchoEar喵伴、唤醒词修改、ESP32、AI萌宠、智能音箱、开发者指南

标签:乐鑫科技、EchoEar喵伴、唤醒词修改、ESP32、AI萌宠、智能音箱、开发者指南大家好,我是一名前端开发工程师,最近在玩乐鑫科技推出的时,发现它不仅萌趣十足,还能进行全双工语音交互、多模态识别,甚至能识别你的情绪和与你互动。EchoEar 喵伴是由乐鑫科技和火山引擎扣子大模型团队合作开发的,它使用乐鑫的芯片方案(ESP32 系列)+ 火山引擎扣子大模型,支持 WiFi 连接和本地处理,长记忆能力可以让它记住用户的偏好与习惯。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1886

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

滑动窗口算法终极指南:从入门到精通的快速学习路径

滑动窗口算法是算法面试中的黄金法则,掌握这一技巧能让你在处理数组和字符串问题时效率倍增。无论你是算法新手还是准备技术面试的开发者,本文都将为你提供完整的滑动窗口学习路径,帮助你在30分钟内掌握这一高效算法技巧。 滑动窗口算法通过维护一个动态变化的区间,避免了重复计算,将时间复杂度从O(n²)优化到O(n),是解决子数组和子串问题的利器。在Awesome LeetCode Resources项目中

gitblog_00681的博客 880

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

滑动窗口算法精讲:从LeetCode 1658题掌握最长子数组求解

在算法与数据结构中,滑动窗口是一种高效处理连续子数组问题的核心技巧。其原理是通过维护一个动态变化的区间窗口,利用双指针同向移动来遍历所有满足条件的子数组,从而将时间复杂度优化至O(n)。这项技术的核心价值在于,它能将看似复杂的嵌套循环问题转化为线性扫描,极大提升了算法效率,尤其适用于求解满足特定条件的最大或最小连续子区间。在实际的工程实践与面试场景中,滑动窗口被广泛应用于字符串匹配、流量控制、数据分析等领域。本文以力扣(LeetCode)1658题“将 x 减到 0 的最小操作数”为具体案例,深入剖析如何通

weixin_30530339的博客 290

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

一文带你了解HuggingFace Transformer 理论基础,Transformer 实战,十万字精读

在 Hugging Face 的库中,Pipeline(流水线)是最高层、最易用的推理 API。如果把直接调用 PyTorch 底层代码比作“驾驶手动挡赛车”(需要精细控制离合、油门和换挡),那么 Pipeline 就是一辆开箱即用的“全自动无人驾驶汽车”。你只需要输入目的地(文本),它就能直接把你送到终点(预测结果)。你不需要知道到底该用 BERT 还是 T5。你只需要告诉 Pipeline 你的任务目标文本生成、翻译、问答、图像分类),它就会自动为你匹配一套默认的最佳预训练模型和分词器。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 553

水果成蓝(java)

你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括开始采摘的树)上 恰好摘一个水果。采摘的水果应当符合篮子中的水果类型。每采摘一次,你将会向右移动到下一棵树,并继续采摘。一旦你走到某棵树前,但水果不符合篮子的水果类型,那么就必须停止采摘。这些树用一个整数数组 fruits 表示, 其中 fruits[i] 是第 i 棵树上的水果 种类。给你一个整数数组 fruits ,返回你可以收集的水果的 最大 数目。

lianggege88的博客 421

LeetCode904. 水果成篮 Java 滑动窗口法

滑动窗口法 详解 LeetCode904. 水果成篮

m0_61195936的博客 230

水果成篮

在一排树中,第 i 棵树产生 tree[i] 型的水果。 你可以从你选择的任何树开始,然后重复执行以下步骤: 把这棵树上的水果放进你的篮子里。如果你做不到,就停下来。 移动到当前树右侧的下一棵树。如果右边没有树,就停下来。 请注意,在选择一颗树后,你没有任何选择:你必须执行步骤 1,然后执行步骤 2,然后返回步骤 1,然后执行步骤 2,依此类推,直至停止。 你有两个篮子,每个篮子可以携带任何...

氦氖氩氪氙 491

904_水果成篮

你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果: 你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。 你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括开始采摘的树)上 恰好摘一个水果 。采摘的水果应当符合篮子中的水果类型。每采摘一次,你将会向右移动到下一棵树,并继续采摘

sjjdjjxjs的博客 426

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

你想要尽可能多地收集水果。你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组。,返回你可以收集的水果的最大数目。棵树上的水果种类。

weixin_73870552的博客 429

【Java算法】滑动窗口 下

​​ 结合哈希表(Map)来高效地统计窗口内不同水果的种类数量。以下是详细分析:初始化:创建一个空的哈希表 用来存储每种水果的数量,初始化左右指针 和 为 0,同时初始化结果变量 为 0,用于记录最大的水果段长度。扩展右边界:右指针 逐渐向右移动,每移动一步,就在哈希表 中增加对应水果的数量。这代表尝试将新的水果加入当前的采摘窗口。处理超过两种水果的情况:使用 循环检查

2302_79806056的博客 1105

Java描述 LeetCode,904. 水果成篮

滑动窗口 容易想到,但是丢水果的过程,很难做到。map和set两种解法都行。

人在江湖 819
上一篇: 斐波那契数列重要不等式证明
下一篇: [Fast & Slow pointers] 判断链表是否有环-快慢指针
1byte ≠ 8bit
博客等级 码龄8年 7242粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值