算法练习:904. 水果成篮

题目链接:904. 水果成篮。

题目意思就是可以选取两个种类的水果不能超过两个种类,该种类个数没有限制,

但是一旦超过两个种类的水果就要停止计数。

示例中数组编号就是就是种类,就是不能出现三个不同编号的数。

1.暴力解法:枚举所有满足情况的子数组,通过哈希表来确定种类个数

2.优化解法:通过滑动窗口

  • 通过两个指针来控制,left与right
  • right每次经过对应的数据放入哈希表中
  • 判断哈希表中数据个数大于二时,进行移动left
  • 进行减少数据,这里是减少该数据出现在哈希表中的个数,当个数为0时,就删除这个元素
  • 更新计数
  • (因为移动left才能减少个数,移动right只会增加个数,并且移动left后不用让right重新退回到left的位置,因为已经可以确定,两个指针之间的种类的个数只有不变或者减少,所以不用再回来重新判断)

//直接通过map来实现
class Solution {
public:int totalFruit(vector<int>& fruits) {map<int, int> m;int cut = 0;for (int left = 0, right = 0; right < fruits.size(); right++){m[fruits[right]]++;while (m.size() > 2 && left < fruits.size()){left++;m[fruits[left - 1]]--;if (m[fruits[left - 1]] == 0) m.erase(fruits[left - 1]);}if (m.size() <= 2){cut = max(cut, right - left + 1);}}return cut;}
};
//通过用数组模拟哈希表
class Solution {
public:int totalFruit(vector<int>& fruits) {int m[100001] = {0};//map<int, int> m;int cut = 0;for (int left = 0, right = 0,head = 0; right < fruits.size(); right++){if(m[fruits[right]]==0) head++;m[fruits[right]]++;while (head > 2 && left < fruits.size()){left++;m[fruits[left - 1]]--;if (m[fruits[left - 1]] == 0) head--;}if (head <= 2){cut = max(cut, right - left + 1);}}return cut;}
};

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

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

相关文章

邮件营销模板定制服务:满足个性营销需求!

邮件营销模板创建步骤&#xff1f;外贸营销邮件范文模板有哪些&#xff1f; 为了在众多邮件中脱颖而出&#xff0c;企业需要定制化的邮件营销模板&#xff0c;以更好地传达品牌信息&#xff0c;提升客户参与度。MailBing将探讨邮件营销模板定制服务的重要性&#xff0c;并介绍…

cuda 环境搭建

官网安装教程 https://docs.nvidia.com/deeplearning/cudnn/latest/installation/windows.html 1. 下载安装驱动&#xff0c; 安装完成之后输入 nvidia-smi 查看结果 https://www.nvidia.cn/drivers/lookup/ 2. 安装工具链 安装完成之后输入 nvcc -v 查看结果 http…

unity 镜面 反射

URP 镜面 资源绑定 下载 namespace UnityEngine.Rendering.Universal { [ExecuteInEditMode]public class PlanarURP : MonoBehaviour{public bool VR false;public int ReflectionTexResolution 512;public float Offset 0.0f;[Range(0, 1)]public float Reflecti…

细说STM32单片机USART中断收发RTC实时时间并改善其鲁棒性的另一种方法

目录 一、工程目的 1、目标 2、通讯协议及应对错误指令的处理目标 二、工程设置 三、程序改进 四、下载与调试 1、合规的指令 2、不以#开头&#xff0c;但以&#xff1b;结束&#xff0c;长度不限 3、以#开头&#xff0c;不以;结束&#xff0c;也不包含;&#xff0c;长…

leetcode 2043.简易银行系统

1.题目要求: 示例: 输入&#xff1a; ["Bank", "withdraw", "transfer", "deposit", "transfer", "withdraw"] [[[10, 100, 20, 50, 30]], [3, 10], [5, 1, 20], [5, 20], [3, 4, 15], [10, 50]] 输出&#xff…

JVM 复习1

内容 JVM 类加载器 JVM 运行时数据区 测试1 JVM整体架构考察。整体架构分为哪三层。分别是什么&#xff1f;通过绘制架构图来作答。 前端编译器是什么&#xff0c;作用是什么。要进行那些步骤&#xff1f; 类加载构成几个步骤。并且详细作答每个步骤的工作。 准备阶段和初…

Android——网络请求

get 请求 public static String doGeg() {String result "";BufferedReader reader;try {// 1.建立连接HttpURLConnection httpURLConnection null;String url "https://www.baidu.com";URL requestUrl new URL(url);httpURLConnection (HttpURLConn…

软件技术求职简历「优选篇」

【#软件技术简历#】一份精心撰写的简历是增加获得心仪职位的机会。那么&#xff0c;如何才能写出一份既全面又吸引人的软件技术简历呢&#xff1f;以下是幻主简历整理的软件技术简历「优选篇」&#xff0c;欢迎大家阅读收藏&#xff01; 软件技术简历范文&#xff1a; 求职意向…

GESP4级考试语法知识(算法概论(三))

爱因斯坦的阶梯代码&#xff1a; //算法1-12 #include<iostream> using namespace std; int main() {int n1; //n为所设的阶梯数while(!((n%21)&&(n%32)&&(n%54)&&(n%65)&&(n%70)))n; //判别是否满足一组同余式cout<<n<…

SOCKS5协议

SOCKS5协议连接过程 SOCKS5服务器默认监听的端口是1080端口 连接到服务器:SOCKS5客户端会通过TCP三次握手与SOCKS5服务器建立连接协商过程:首先SOCKS5客户端会发送一个请求到服务器。告诉服务器自己支持什么方法。并带有一个方法列表(例如&#xff1a;A,B,C)。然后SOCKS5服务…

爬虫入门urllib 和 request(二)

文章目录 1、urllib介绍2、urllib的基本方法介绍2.1 urllib.Request2.2 response.read() 3、urllib请求百度首页的完整例子4、小结 1、urllib介绍 除了requests模块可以发送请求之外, urllib模块也可以实现请求的发送,只是操作方法略有不同! urllib在python中分为urllib和url…

Perforce《2024游戏技术现状报告》Part2:游戏引擎、版本控制、IDE及项目管理等多种开发工具的应用分析

游戏开发者一直处于创新前沿。他们的实践、工具和技术受到各行各业的广泛关注&#xff0c;正在改变着组织进行数字创作的方式。 近期&#xff0c;Perforce发布了《2024游戏技术现状报告》&#xff0c;通过收集来自游戏、媒体与娱乐、汽车和制造业等高增长行业的从业者、管理人…

美国历任总统特征数据-多个字段(1789-2024年)

数据简介&#xff1a;美国历任总统数据集是一个涵盖了从美国建国以来所有总统的详细信息的综合性数据集。该数据集不仅包含了每位总统的基本信息&#xff08;如姓名、任期、党派等&#xff09;&#xff0c;还涵盖了他们在任期间的重要政策、经济指标、国内外事件等关键数据。通…

实体类实体类

private static final long serialVersionUID1L; TableId(value "id", type IdType.AUTO) /** * 是否默认频道 */ private Boolean isDefault; /** * 创建时间 */ private Date createdTime; Override protected Serializable p…

视频QoE测量学习笔记(二)

A Survey on Bitrate Adaptation Schemes for Streaming Media Over HTTP论文学习笔记 自适应比特率&#xff08;ABH或ABS&#xff09; 是一种旨在通过 HTTP 网络有效地流式传输文件的技术。向用户的视频播放器提供多个相同内容、不同大小文件的文件&#xff0c;然后客户端选…

HTML 基础标签——文本内容标签 <ul>、<ol>、<blockquote> 、<code> 等标签的用法详解

文章目录 1. 标题标签2. 段落标签3. 文本格式化标签4. 列表标签4.1 无序列表 `<ul>`4.2 有序列表 `<ol>`5. 引用标签5.1 块引用 `<blockquote>`5.2 行内引用 `<q>`5.3 作品引用 `<cite>`6. 代码和预格式文本标签6.1 代码标签 `<code>`6.2 …

论文阅读笔记-Get To The Point: Summarization with Pointer-Generator Networks

前言 最近看2021ACL的文章&#xff0c;碰到了Copying Mechanism和Coverage mechanism两种技巧&#xff0c;甚是感兴趣的翻阅了原文进行阅读&#xff0c;Copying Mechanism的模型CopyNet已经进行阅读并写了阅读笔记&#xff0c;如下&#xff1a; 论文阅读笔记&#xff1a;Copyi…

Recyclerview缓存原理

一、Recyclerview列表视图的构建过程 Recyclerview主要是有itemview组成&#xff0c;而itemview的构建过程主要分为以下三步&#xff1a; 1、Create ViewHolder 2、Bind ViewHolder 3、Render ViewHolder 其中&#xff0c;第一步的创建ViewHolder是视图构建最耗时的操作&a…

PDF多功能工具箱 PDF Shaper v14.6

如今对PDF处理的软件很多都是只是单一的功能。PDF Shaper给你完全不同的体验&#xff0c;因为PDF Shaper是一款免费的PDF工具集合的软件。有了PDF Shaper&#xff0c;你以后再也不用下载其他处理PDF的软件了。PDF Shaper的功能有&#xff1a;合并&#xff0c;分割&#xff0c;加…

【算法】(Python)贪心算法

贪心算法&#xff1a; 又称贪婪算法&#xff0c;greedy algorithm。贪心地追求局部最优解&#xff0c;即每一步当前状态下最优选择。试图通过各局部最优解达到最终全局最优解。但不从整体最优上考虑&#xff0c;不一定全局最优解。步骤&#xff1a;从初始状态拆分成一步一步的…