【算法专题突破】滑动窗口 - 水果成篮(13)

news2024/11/14 19:02:22

目录

1. 题目解析

2. 算法原理

3. 代码编写

写在最后:


1. 题目解析

题目链接:904. 水果成篮 - 力扣(Leetcode)

题目有很长一段话,但是我们读一遍题目可以提炼转化出题目的要求 :

其实就是找出一个最长的子数组,且数组内数字的种类不超过两个。

2. 算法原理

这道题题目可以使用滑动窗口来解决,

为什么呢?

我们可以来简单分析一下,

我们通过哈希表维护一个窗口,

让right++进窗口,如果出现了三个种类的水果,就让left++,

left++会有两种情况,

1. 还是有三种水果,那就让left继续++

2. 剩两种水果了,那就记录结果,这个时候重点来了,

right需不需要回到left的位置重新++呢?不需要,这就是滑动窗口的核心,

我们直接让right继续++进窗口即可。

3. 代码编写

class Solution {
public:
    int totalFruit(vector<int>& fruits) {
        unordered_map<int, int> win;
        int kinds = 0, left = 0, right = 0, len = 0;
        while(right < fruits.size()) {
            win[fruits[right++]]++;
            while(left < fruits.size() && win.size() > 2) {
                win[fruits[left++]]--;
                if(win[fruits[left - 1]] == 0) {
                    win.erase(fruits[left - 1]);
                    break;
                }
            }
            len = max(len, right - left);
        }
        return len;
    }
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

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

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

相关文章

金融行业的软件测试分析

随着金融行业的业务不断增加&#xff0c;金融交易模式的不断变化&#xff0c;金融机构对信息化的要求也越来越高&#xff0c;高质量的金融软件对于金融机构来说显得尤为重要。如何保证金融行业软件的质量&#xff0c;对金融行业软件的测试人员来说&#xff0c;也提出了更高的要…

轻量级的Python IDE —— Thonny

现在的开发工具太多了&#xff0c;而且每个开发工具都致力于做成最好用最智能的工具&#xff0c;所以功能越堆越多&#xff0c;越怼越智能。安装这些开发工具比较烧脑&#xff0c;经常需要经过许多配置步骤。作为一个 Python 开发者来说&#xff0c;好多人光是这些配置都要弄半…

程序与保持健康的六个秘诀

虽然编程并不被视为是一个高危职业,但我们发现一大批数量惊人的开发人员正遭受健康问题的折磨。坐在办公桌很舒适,但有研究表明,它并不像你想象的那样健康。幸运的是,有很多非常容易做到的方法可以改善你的健康。 1.锻炼 尽管这可能是最明显的方法,但很多开发人员常常会…

嵌入式学习笔记(26)5S5PV210串行通信编程实战

5.5.1整个流程分析 整个串口通信相关程序包含2部分&#xff1a;uart_init负责初始化串口&#xff0c;uart_putc负责发送一个字节 5.5.2串口初始化关键步骤 &#xff08;1&#xff09;初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Tx和Rx分别对应GPA0_1和GPA0_0) &#…

排序算法-----插入排序

目录 前言&#xff1a; 插入排序 原理图 代码实现 分析总结 二分法插入排序 代码实现 前言&#xff1a; 嗨嗨^_^&#xff0c;米娜桑&#xff0c;今天我们继续学习排序算法中的插入排序&#xff0c;激不激动&#xff0c;兴不兴奋呢&#xff01;好了废话不多说&#xff0c;…

合肥对新通过(CMMI)五级、四级、三级认证的软件企业,对新通过信息技术服务标准(ITSS)认证的软件企业,给予最高50万奖励

合肥市加快软件产业发展 推进软件名城创建若干政策实施细则 为贯彻落实《合肥市人民政府办公室关于印发合肥市加快软件产业发展推进软件名城创建若干政策的通知》&#xff08;合政办〔2023〕9号&#xff09;文件精神&#xff0c;规范政策资金管理&#xff0c;制定本实施细则。…

Convai:让虚拟游戏角色更智能的对话AI人工智能平台

【产品介绍】​ 名称 Convai​ 具体描述​ Convai是一款专为虚拟世界而设计的对话人工智能平台&#xff0c;它可以让你为你的游戏或应用中的角色 赋予人类般的对话能力。Convai利用了最先进的生成式对话人工智能技术&#xff0c;让你的角色可以…

物联网行业案例 - Splashtop 助力成都谷帝科技有限公司远程维护安卓设备

成都谷帝科技有限公司专注于提供针对特定行业需求的全面物联网软硬件解决方案。其产品系列包括智慧路灯系统、智能门禁、智能柜控、智慧体育步道、农业灌溉、工业焙烧系统、水质在线检测系统等。 客户需求 成都谷帝科技有限公司提供物联网软硬件解决方案&#xff0c;还需要对…

20230912在ubuntu18.04下使用pigz来提高tar命令压缩解压缩的速度

20230912在ubuntu18.04下使用pigz来提高tar命令压缩解压缩的速度 2023/9/15 22:19 https://blog.csdn.net/wb4916/article/details/128447298 20221226编译Toybrick的TB-RK3588X开发板的Android12系统2-SDK预处理 4、单线程压缩。 建议使用&#xff1a;pigz多线程压缩&#xf…

Virtualbox中Ubuntu根目录空间不足

现象 Virtualbox中Ubuntu根目录空间不足 解决 动态存储 虚拟机关闭先在虚拟介质管理里把硬盘Size调大开启Ubuntu用Disks或者GParted重新调整分区大小重新启动 步骤参考: https://zhuanlan.zhihu.com/p/319431032 https://blog.csdn.net/ningmengzhihe/article/details/1272…

OpenCV(四十五):ORB特征点

1.特征点的组成 特征点由关键点和描述子两部分组成&#xff1a; 关键点是在图像中检测到的具有显著变化的位置坐标。描述子是用于表示关键点周围局部区域特征的向量或特征向量。 2.ORB特征点原理 ORB特征点由关键点FAST角点 和描述子BRIEF组成。 2.1提取FAST角点的算法 FA…

STM32 Cubemx 基本定时器Basic Timers

文章目录 前言简介Cubemx使用 前言 持续学习stm32中… 简介 基本定时器有TIM6和TIM7&#xff0c;是一个16位的向上定时器。基本定时器的用途较少&#xff0c;只能用于纯粹的定时器以及驱动DAC模块。 注&#xff1a;基本定时器各自独立&#xff0c;不存在共用的资源。 基本定…

pytorch生成CAM热力图-单张图像

利用ImageNet预训练模型生成CAM热力图-单张图像 一、环境搭建二、主要代码三、结果展示 代码和图片等资源均来源于哔哩哔哩up主&#xff1a;同济子豪兄 讲解视频&#xff1a;CAM可解释性分析-算法讲解 一、环境搭建 1&#xff0c;安装所需的包 pip install numpy pandas mat…

EATON XV-440-10TVB-1-13-1工业显示屏模块

EATON XV-440-10TVB-1-13-1工业显示屏模块是一款功能强大的工业显示屏&#xff0c;具有以下特点和功能&#xff1a; 1. 显示屏尺寸为10.4英寸&#xff0c;分辨率为800600。 2. 采用TFT液晶显示技术&#xff0c;显示效果清晰&#xff0c;色彩鲜艳。 3. 支持多种显示模式&…

ESP32-BOX的组件配置添加核心部分详细介绍

前言 &#xff08;1&#xff09;为了方便开发&#xff0c;ESP32提供了组件库方便用户进行二次开发。 github仓库&#xff1b;gitee仓库 &#xff08;2&#xff09;在学习本章之前最好有CMake或者Makefile的基础&#xff0c;如果没有也不要慌&#xff0c;有的话最好。 &#xff…

1-FPGA硬件加速-YUV_YCbCr

这是对《基于Matlab与FPGA的图像处理教程》的学习笔记&#xff0c;代码和内容摘取自书中。 心得&#xff1a; 使用FPGA进行硬件加速的重点是消除或者减少浮点数运算&#xff0c;转换为定点运算&#xff0c;然后通过pipeline流水设计转为并行实现加速。 原理和方法 RGB与&…

微信小程序——常用组件的属性介绍

常用的组件内容标签 text 文本组件类似于HTML中的span标签&#xff0c;是一个行内元素rich-text 富文本标签支持把HTML字符串渲染为WXML结构 text标签的基本使用 通过text组件的selectable属性&#xff0c;实现长按选中文本内容的效果。只有text标签支持长按选中效果&#x…

爬虫代理在数据采集中的应用详解

随着互联网技术的不断发展&#xff0c;数据采集已经成为了各个行业中必不可少的一项工作。在数据采集的过程中&#xff0c;爬虫代理的应用越来越受到了重视。本文将详细介绍爬虫代理在数据采集中的应用。 什么是爬虫代理&#xff1f; 爬虫代理是指利用代理服务器来隐藏真实的IP…

string的使用和模拟实现

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; C&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大…

Pytest系列-使用自定义标记mark(6)

简介 pytest 可以支持自定义标记&#xff0c;自定义标记可以把一个 web 项目划分为多个模块&#xff0c;然后指定模块名称执行 Pytest 里面自定义标记 用法&#xff1a;将pytest.mark.标记名称 放到测试函数或者类上面 使用&#xff1a; 执行时加上 -m 标记名 进行用例筛选…