(C语言)力扣 904.水果成篮
写在所有的前面:
本文采用C语言实现代码
目录
- 写在所有的前面:
- 题目说明
- 题目:力扣 904.水果成篮
- 题目出处
- 题目描述Description
- 输入Input
- 输出Output
- 样例Sample
- 限制Hint
- 解答说明
- 方案
- 解题思路
- 一般情况
- 特殊情况
- 代码实现
- 其他解释
题目说明
题目:力扣 904.水果成篮
题目出处
力扣 904.水果成篮
https://leetcode.cn/problems/fruit-into-baskets/
题目描述Description
你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组
fruits表示,其中fruits[i]是第i棵树上的水果种类 。
你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:
- 你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。
- 你可以选择任意一棵树开始采摘,你必须从每棵树(包括开始采摘的树)上恰好摘一个水果 。
- 采摘的水果应当符合篮子中的水果类型。
- 每采摘一次,你将会向右移动到下一棵树,并继续采摘。
- 一旦你走到某棵树前,但水果不符合篮子的水果类型,那么就必须停止采摘。
输入Input
一个整数数组
fruits
一个整数 水果数量fruitsSize
输出Output
你可以收集的水果的最大数目。
样例Sample
输入1
fruits = [1,2,1]
输出1
3
解释1
可以采摘全部 3 棵树
输入2
fruits = [0,1,2,2]
输出2
3
解释2
可以采摘 [1,2,2] 这三棵树。
如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。
更多样例见连接
限制Hint
1 <= fruits.length <= 105
0 <= fruits[i] < fruits.length
C语言的代码接口为
int totalFruit(int* fruits, int fruitsSize) {}
自测用主函数部分
int main()
{int fruits[] = { 1,2,1 };printf("%d", totalFruit(fruits, 3));
}
解答说明
方案
解题思路
a 果实,b 果实
nextnum 最近的相同果实数量
allnum 最近的 a b 果实数量
maxnum 最大量
一般情况
- 当前水果可摘
if (fruits[i] == a || fruits[i] == b)- 最近的 a b 果实数量
allnum+1 - 水果相同则最近的相同果实数量
nextnum+1 - 水果改变则最近的相同果实数量
nextnum重置为 1
- 最近的 a b 果实数量
- 当前水果是全新的果实
- 通过最近的两水果数量
allnum更新最大数量maxnum(保留更大的) - 通过最近的相同果实数量
nextnum+1更新最近的两水果数量allnum - 水果改变,最近的相同果实数量
nextnum重置为 1 - 更新水果种类(保留较近的水果)
- 通过最近的两水果数量
特殊情况
遍历所有水果后再更新一次最大数量maxnum
第一颗水果必定更新水果种类if (i == 0)
代码实现
int totalFruit(int* fruits, int fruitsSize)
{int i = 0;//第i颗果树int a = -1, b = -1, nextnum = 0, allnum = 0, maxnum = 0;//a果实,b果实,最近的相同果实数量,最近的ab果实数量,最大量//从前向后遍历while (i < fruitsSize){//如果水果符合if (fruits[i] == a || fruits[i] == b){allnum++;//如果水果相同if (i > 0 && fruits[i] == fruits[i - 1])nextnum++;//如果水果改变elsenextnum = 1;}else //全新的果实{//更新最大数量if (allnum > maxnum)maxnum = allnum;//更新最近的ab果实数量allnum = nextnum + 1;//更新最近相同果实数量nextnum = 1;//更新果实种类if (i == 0 || fruits[i - 1] == b)a = fruits[i];else if (fruits[i - 1] == a)b = fruits[i];}//下一颗果树i++;}//更新最大数量if (allnum > maxnum)maxnum = allnum;return maxnum;
}
其他解释
可能有更优解,但是懒得看了
相关文章:
(C语言)力扣 904.水果成篮
写在所有的前面: 本文采用C语言实现代码 目录 写在所有的前面:题目说明题目:力扣 904.水果成篮题目出处题目描述Description输入Input输出Output样例Sample限制Hint 解答说明方案解题思路一般情况特殊情况 代码实现其他解释 题目说明 题目…...
2024 年12月英语六级CET6听力原文(Lecture部分)
2024 年12月英语六级CET6听力原文(Long Conersation和Passage) 1 牛津大学关于普遍道德准则的研究及相关观点与建议 译文 2 食物颜色对味觉体验及大脑预期的影响 译文 3 财务资源对意义与幸福之间关系的影响研究 译文...
CentOS下,离线安装vscode的步骤;
前置条件: 1.CentOS7; 步骤: 1.下载vscode指定版本,例如; 例如 code-1.83.1-1696982959.el7.x86_64.rpm 2.使用下面命令: sudo rpm -ivh code-1.83.1-1696982959.el7.x86_64.rpm 其他: 卸载vscode的命…...
ubuntu停止.netcore正在运行程序的方法
在Ubuntu系统中停止正在运行的.NET Core程序,你可以使用以下几种方法: 使用kill命令: 如果你知道.NET Core程序的进程ID(PID),你可以直接使用kill命令来停止它。首先,使用ps命令配合grep来查找.…...
机器学习基础 衡量模型性能指标
目录 1 前言 编辑1.1 错误率(Error rate)&精度(Accuracy)&误差(Error): 1.2 过拟合(overfitting): 训练误差小,测试误差大 1.3 欠拟合(underfitting):训练误差大,测试误差大 1.4 MSE: 1.5 RMSE: 1.6 MAE: 1.7 R-S…...
《OpenCV计算机视觉》-对图片的各种操作(均值、方框、高斯、中值滤波处理)及形态学处理
文章目录 《OpenCV计算机视觉》-对图片的各种操作(均值、方框、高斯、中值滤波处理)边界填充阈值处理图像平滑处理生成椒盐图片均值滤波处理方框滤波处理高斯滤波处理中值滤波处理 图像形态学腐蚀膨胀开运算闭运算顶帽和黑帽 《OpenCV计算机视觉》-对图片…...
如何让Tplink路由器自身的IP网段 与交换机和电脑的IP网段 保持一致?
问题分析: 正常情况下,我的需求是:电脑又能上网,又需要与路由器处于同一局域网下(串流Pico4 VR眼镜),所以,我是这么连接 交换机、路由器、电脑 的: 此时,登录…...
【JetPack】Navigation知识点总结
Navigation的主要元素: 1、Navigation Graph: 一种新的XML资源文件,包含应用程序所有的页面,以及页面间的关系。 <?xml version"1.0" encoding"utf-8"?> <navigation xmlns:android"http://schemas.a…...
InnoDB引擎的内存结构
InnoDB擅长处理事务,具有自动崩溃恢复的特性 架构图: 由4部分组成: 1.Buffer Pool:缓冲池,缓存表数据和索引数据,减少磁盘I/O操作,提升效率 2.change Buffer:写缓冲区,…...
Y3地图制作1:水果缤纷乐、密室逃脱
文章目录 一、水果缤纷乐1.1 游戏设计1.1.1 项目解析1.1.2 项目优化1.1.3 功能拆分 1.2 场景制作1.2.1 场景需求1.2.2 创建主镜头、绘制草稿,构思文案和情景1.2.3 构建场景地图1.2.4 光源与氛围设置 1.3 游戏初始化1.3.1 物编、UI预设置1.3.2 游戏初始化1.3.2 玩家初…...
ESP32_H2(IDF)学习系列-ADC模数转换(连续转换)
一、简介(节选手册) 1 概述 ESP32-H2 搭载了以下模拟外设: • 一个 12 位逐次逼近型模拟数字转换器 (SAR ADC),用于测量最多来自 5 个管脚上的模拟信号。 • 一个温度传感器,用于测量及监测芯片内部温度。 2 SAR ADC 2…...
如何通过TikTok成功引流到独立站
随着短视频平台的迅猛发展,TikTok已成为全球最受欢迎的社交媒体之一,尤其是在年轻用户群体中更是势不可挡。如果你是一个独立站(如电商网站、博客、个人品牌站等)的运营者,那么如何通过TikTok引流到独立站已经成为一个…...
生成签名文件 .keystore
打开java sdk 到bin目录(D:\JDK\Java\jdk1.8.0_202\bin),打开dos窗口执行以下命令: 命令行输入: 1、生成签名文件:(-alias 别名 validity 有效期 9125 天) keytool -genkeypair -v…...
Mono里运行C#脚本3—mono_jit_init
前面已经介绍了配置参数的读取,这样就可以把一些特殊的配置读取进来,完成了用户配置阶段的参数,接着下来就需要进行大工程的建造了。 为什么这样说呢,因为需要解释并执行C#编译的受托管的代码,相当于就是建立一个C#代码运行的虚拟机,而这个虚拟机还是很复杂的,不但要支…...
龙迅#LT6911C适用于HDMI转MIPI/LVDS产品应用,分辨率高达4K30HZ,内置程序,支持KEY(HDCP)!
1. 描述 LT6911C 是一款高性能 HDMI1.4/DP 转 MIPIDSI/CSI/LVDS 芯片,适用于 VR/智能手机/显示应用。 对于 MIPIDSI/CSI 输出,LT6911C具有可配置的单端口或双端口 MIPIDSI/CSI,具有 1 个高速时钟通道和 1~4 个高速数据通道,运行…...
阿里云虚拟主机ecs镜像如何转移到本地virtualbox上
导出阿里云 ECS 镜像 创建快照:登录阿里云 ECS 控制台,找到对应的 ECS 实例,创建一个快照,等待快照创建完成。创建自定义镜像:基于创建好的快照,创建一个自定义镜像,填写镜像名称和描述等信息。导出镜像:镜像创建完成后,点击 “导出镜像”,并授权访问,将镜像导出到阿…...
虚拟机桥接模式
主机Win10,虚拟机xp 1.虚拟机设置中选择桥接模式 2.在虚拟机菜单:编辑>虚拟机网络编辑,点击“更改设置”,可以看到三个网卡,这三个网卡分别对应不同的网络共享模式。桥接模式须使用VMnet0,如果没看到这个网卡&…...
酷睿i7和i5哪个好?i5和i7的区别介绍
在英特尔酷睿处理器家族中,i7与i5作为面向不同用户群体的主流产品,各自承载着不同的性能定位与使用价值。在面对“酷睿i7和i5哪个好”的问题时,答案并非一概而论,而是取决于具体的应用需求、预算考量以及对性能与效率的期待。本文…...
STM32 高级 谈一下IPV4/默认网关/子网掩码/DNS服务器/MAC
首先可以通过 winr->输入cmd->输入ipconfig 命令可以查看计算机的各种地址 IPV4:是互联网协议第 4 版(Internet Protocol version 4)所使用的地址。它是一个 32 位的二进制数字,通常被分为 4 个 8 位的部分ÿ…...
Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集FGSM介绍FGSM代码实现FGSM算法实现攻击效果 代码汇总fgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CIFAR10进行分类 Pytorch | 从零构建Vgg…...
QMCDecode:解锁QQ音乐加密格式,让音乐真正属于你
QMCDecode:解锁QQ音乐加密格式,让音乐真正属于你 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,…...
Intv_AI_MK11深入LSTM时间序列预测:模型原理与代码实现详解
Intv_AI_MK11深入LSTM时间序列预测:模型原理与代码实现详解 1. 为什么需要LSTM? 时间序列数据在我们的生活中无处不在——股票价格波动、天气变化、设备传感器读数...这些数据都有一个共同特点:当前时刻的值往往与过去一段时间的值相关。传…...
从哈希表到链表:一次搞懂链地址法解决冲突的C++实现细节(含插入与删除操作避坑)
从哈希表到链表:链地址法的C实战精解与避坑指南 在数据结构的世界里,哈希表因其接近O(1)的理想查找效率而备受青睐。但当我们真正动手实现时,特别是采用链地址法解决冲突时,那些看似简单的链表操作却暗藏玄机。本文将带您深入链地…...
丹青识画完整体验:铺卷、参详、点睛、获墨,四步感受AI艺术
丹青识画完整体验:铺卷、参详、点睛、获墨,四步感受AI艺术 1. 艺术与科技的完美邂逅 当人工智能遇上东方美学,会碰撞出怎样的火花?「丹青识画」智能影像雅鉴系统给出了令人惊艳的答案。这款融合深度学习技术与传统书画艺术的产品…...
【2026知网预警】不想论文被直接退稿?10款降AI工具实测红黑榜,带你避开90%的坑
说真的,现在写论文难,改论文更难。交稿前一查,心都凉半截。AI痕迹动不动就飘红,导师那边没法交代,系统检测也过不了关。为了找出靠谱的降AI法子,我也是折腾了好几天。 我把以下10个降AI工具一个个试过来了…...
OpenClaw自动化测试:Gemma-3-12b-it生成与执行单元测试用例
OpenClaw自动化测试:Gemma-3-12b-it生成与执行单元测试用例 1. 为什么需要AI生成单元测试 作为独立开发者,我长期面临一个矛盾:明知单元测试对代码质量至关重要,却总在项目赶工时优先砍掉测试环节。直到发现OpenClaw的test-gene…...
GNU C扩展语法在嵌入式开发中的实战应用
1. GNU C扩展语法概述在嵌入式开发领域,GNU C编译器因其强大的扩展功能而广受欢迎。作为一名长期从事嵌入式开发的工程师,我发现这些扩展语法不仅能提高代码效率,还能解决许多标准C语言难以处理的场景问题。GNU C扩展主要包括以下几个重要特性…...
避坑指南:Qt Modbus TCP开发中自动刷新与写入冲突的排查与修复
Qt Modbus TCP开发实战:自动刷新与写入冲突的深度解决方案 在工业控制系统的HMI界面开发中,实时数据刷新与用户交互操作的平衡是个经典难题。上周调试一个智能仓储监控系统时,就遇到了这样的场景:当PLC寄存器数据以500ms间隔自动刷…...
如何比较不同注册商的域名注册价格_如何查看域名的SEO数据和排名信息
如何比较不同注册商的域名注册价格 在互联网时代,域名已经成为网站的“门面”,是网站建设的重要一步。不同注册商的域名注册价格差异较大,如何在保证性价比的前提下选择合适的注册商成为了一个重要的问题。本文将详细探讨如何比较不同注册商…...
C++27反射工具链现状全景图(2024Q3):Boost.PFR停更、cpp-reflect弃坑、std::reflect成为唯一工业级选择?
第一章:C27静态反射的标准化演进与战略意义C27静态反射(Static Reflection)正从实验性提案走向核心语言特性,其标准化进程标志着C元编程范式的根本性跃迁。不同于C20的std::is_same_v等类型特征或C23的std::type_identity_t&#…...
