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

https://leetcode.cn/problems/fruit-into-baskets/description/

/** Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved.*/package com.huawei.prac;import java.util.HashMap;
import java.util.Map;public class Solution13th {public static void main(String[] args) {int[] fruits = {3, 3, 3, 1, 2, 1, 1, 2, 3, 3, 4};System.out.println(totalFruit(fruits)); // 5}/*** 904. 水果成篮[滑动窗口]* 找至多包含两种元素的最长子串,返回其长度* 1.map存放不同元素及其数量* 2.left = right - 1; left从前往后** @param fruits 整数数组* @return 最大数目*/public static int totalFruit(int[] fruits) {int maxTree = 0;int left = 0;int right = 0;Map<Integer, Integer> map = new HashMap<>();while (right < fruits.length) {map.merge(fruits[right], 1, (oldV, val) -> ++oldV);while (map.size() > 2) {map.computeIfPresent(fruits[left], (key, oldV) -> --oldV);if (map.get(fruits[left]) == 0) {map.remove(fruits[left]);}left++;}maxTree = Math.max(maxTree, right - left + 1);right++;}return maxTree;}
}

【042】904. 水果成篮[滑动窗口]相关推荐

  1. leetcode904. 水果成篮(滑动窗口)

    一:题目 二:上码 class Solution {public:/**思路:滑动窗口1.滑动窗口为我们 两个品种水果的个数2.滑动窗口的起始位置为数组的起始位置,当遇见一个新的水果种类的时候,这时候 ...

  2. leetcode:904. 水果成篮

    题目来源 leetcode:904. 水果成篮 题目描述 题目解析 题意 题意从任意位置开始,若最多只能收集两种水果,问最多能收集多少个水果. 这道题目可以理解为求只包含两种元素的最长连续子序列,和l ...

  3. 904. 水果成篮(数组、滑动窗口)

    904. 水果成篮(数组.滑动窗口) 考察点: 数组.滑动窗口 水果成篮 你正在探访一家农场,农场从左到右种植了一排果树.这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i ...

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

    C++:Leetcode-滑动窗口-904水果成篮 重点掌握滑动窗口思想,左指针和右指针分别代表的含义 重点掌握熟悉利用哈希表进行统计和查重. 面对这种同类型数量统计问题或者是查重问题,哈希表是不二之 ...

  5. LeetCode 904. 水果成篮

    904. 水果成篮 题目:你正在探访一家农场,农场从左到右种植了一排果树.这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 . 你想要尽可能多地收集水果 ...

  6. LeetCode每日一题——904. 水果成篮

    LeetCode每日一题系列 题目:904. 水果成篮 难度:普通 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 你正在探访一家农场,农场从左到右种植了一排果树.这些树用一个整 ...

  7. leetcode 题解 904.水果成篮(Typescript)

    /* * @lc app=leetcode.cn id=904 lang=typescript * * [904] 水果成篮(实质为求最大两元素连续子串) */ //滑动窗口 // @lc code= ...

  8. LeetCode 904. 水果成篮【fruit-into-baskets】

    904. 水果成篮 题目详情 题目传送门:904. 水果成篮 在一排树中,第 i 棵树产生 tree[i] 型的水果. 你可以从你选择的任何树开始,然后重复执行以下步骤: 把这棵树上的水果放进你的篮子 ...

  9. 力扣(LeetCode)904. 水果成篮(C语言)

    一.环境说明 本文是 LeetCode 904题 : 水果成篮,使用c语言实现 滑动窗口+哈希集合. 测试环境:Visual Studio 2019 二.代码展示 //滑动窗口+哈希表,一次遍历O(n ...

最新文章

  1. STM32F10X的boot分析
  2. OSX unable to write 'random state'
  3. LruCache缓存bitmap(一)
  4. 一个好用的时间管理Chrome扩展 - Calendar and Countdown
  5. R金融统计:收益、随机行走和模拟
  6. Exceptionless服务端+kibana部署实时日志纪要
  7. 前端开发 做一个新闻列表
  8. PICKIT 3 烧录hex文件
  9. 【干货】300余份数字化资料包免费下载(报告、白皮书、方案、政策等)
  10. ie下的firebug
  11. 【UNITY3D 游戏开发之八】UNITY编译到IPHONE运行 COLLIDER 无法正常触发事件解决方案...
  12. [转]技术路线的选择重要但不具有决定性
  13. 自编码器原理以及相关算法 Basic Auto-Encoder,Regularized Auto-Encoder,Denoising Auto-Encoder
  14. PythonStock(25)股票系统:PythonStock V1 发布了,基于Python开发,使用Tushare抓取数据,存储到Mariadb数据库中,同时还开发了通用数据报表系统,通过配置
  15. 敏捷项目管理21天学习计划--敏捷生命周期
  16. 两台局域网电脑大数据传输详细教程
  17. u盘制作启动盘后空间容量变小解决方法
  18. c++ 判断电脑是否装有vc_redist.x86 运行时库
  19. Matlab 矩阵元素选取方法
  20. Java8实战读书笔记-第3章 λ表达式

热门文章

  1. 51单片机STC 89C52RC进阶 – 自制8x8点阵、点亮单颗LED、显示点阵汉字
  2. 《卸甲笔记》-多表查询之二
  3. 名企笔试:网易游戏2017招聘笔试题(赶去公司)
  4. 计算机主机机箱背后,2.8L的办公电脑?可以背在显示器后面的主机—你见过吗?...
  5. 铁威马NAS媒体索引设置教程
  6. 【初级C语言】表达式和基本语句(布尔型与0比较,浮点型与0比较,switch语句,提高循环语句的效率)
  7. 模拟cmos集成电路(4)
  8. limbo运行veket linux,veket linux系统下载-veket操作系统v20 最新版 - 极光下载站
  9. Java类型转换笔记
  10. Vivado IP中的Shared Logic到底是干嘛的?