当前位置: 首页 > news >正文

leetcode 904 水果成篮

一、题目描述

二、解题思路

题意解析:

fruit[i]是指i位置树上果实的种类,例如fruits[0]为1,代表0位置树上的是1号果实。只有两个篮子,每个篮子只能装同种果实,比如只能装1号、2号等等。一棵树只能摘一个水果,题目要求最多可以摘的水果数量。

整体思路:

题目要求最多可以摘的水果数量。也就是求只有两种类型的最长连续子串的长度,我们可以借助滑动窗口的思想来解决这个问题。

具体思路:

哈希表nums用于记录每一种类型的水果采摘的个数,用于模拟篮子。

<1>进窗口:进入哈希表nums

 //进窗口

 nums[fruits[right]]++;

<2>出窗口:退出哈希表,left右移

//出窗口

while(nums.size()>2){

         nums[fruits[left]]--;

         if (nums[fruits[left]]==0)  nums.erase(fruits[left]);

         left++;

}

<3>更新:更新length

 //更新

length=max(length,right-left+1);

三、代码实现

时间复杂度:T(n)=O(n)

空间复杂度:S(n)=O(1)

class Solution {
public:int totalFruit(vector<int>& fruits) {//滑动窗口int left,right,n=fruits.size();map<int,int> nums;int length=0;for(left=0,right=0;right!=n;right++){//进窗口nums[fruits[right]]++;//出窗口while(nums.size()>2){nums[fruits[left]]--;if (nums[fruits[left]]==0)  nums.erase(fruits[left]);left++;}//更新length=max(length,right-left+1);}return length;}
};

http://www.dtcms.com/a/342679.html

相关文章:

  • 从零开始理解 K 均值聚类:原理、实现与应用
  • Grafana侧重可视化,那多数据源告警呢?
  • Linux的奇妙冒险——进程间通信(管道、SystemV IPC)
  • 【实战记录】麒麟服务器操作系统安装KSC-Defender安全中心全指南
  • EagleTrader交易员采访|交易是一场概率游戏
  • 免费DirectX修复工具?游戏运行异常?【图文详解】dll修复工具?D3DX9_43.dll丢失
  • 【科研绘图系列】R语言绘制序列分析图
  • Rust 的流程控制与函数
  • SQL 中 DISTINCT 的全方位指南:从基础用法到性能优化
  • 【51单片机】【protues仿真】基于51单片机温度烟雾控制系统
  • C++项目实战——高性能内存池(一)
  • Redis面试精讲 Day 26:Redis源码分析:事件循环与网络模型
  • docker使用和部署深化学习
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第一章知识点问答(21题)
  • 华为AUTOSAR质量目标与开发实践
  • LeetCode100 -- Day3
  • 常德二院全栈国产化实践:KingbaseES 数据库的关键作用
  • 机器学习聚类算法学习报告
  • Spring容器Bean的创建流程
  • 使用jwt+redis实现单点登录
  • Matplotlib+HTML+JS:打造可交互的动态数据仪表盘
  • Android - 统一资源标识符 Uri
  • 利用DeepSeek编写调用系统命令用正则表达式替换文件中文本的程序
  • [NCTF2019]True XML cookbook
  • PyTorch Vision 系列:高效数据处理的利器
  • 动手学深度学习(pytorch版):第五章节—深度学习计算(2)参数管理
  • 进程和进程调度
  • Rclone入门对象存储云到云迁移
  • 我从零开始学微积分(2)- 函数与图形
  • YOLO --- YOLOv3以及YOLOv4模型详解