传送门:力扣

你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。

你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:

你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。
你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括开始采摘的树)上 恰好摘一个水果 。采摘的水果应当符合篮子中的水果类型。每采摘一次,你将会向右移动到下一棵树,并继续采摘。
一旦你走到某棵树前,但水果不符合篮子的水果类型,那么就必须停止采摘。
给你一个整数数组 fruits ,返回你可以收集的水果的 最大 数目。

示例 1:

输入:fruits = [1,2,1]
输出:3
解释:可以采摘全部 3 棵树。
示例 2:

输入:fruits = [0,1,2,2]
输出:3
解释:可以采摘 [1,2,2] 这三棵树。
如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。
示例 3:

输入:fruits = [1,2,3,2,2]
输出:4
解释:可以采摘 [2,3,2,2] 这四棵树。
如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。
示例 4:

输入:fruits = [3,3,3,1,2,1,1,2,3,3,4]
输出:5
解释:可以采摘 [1,2,1,1,2] 这五棵树。

提示:

1 <= fruits.length <= 105
0 <= fruits[i] < fruits.length

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fruit-into-baskets
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

接触到哈希容器这个概念,unordered_map,头文件include<unordered_map>

unordered_map<int, int> basket;//无序哈希容器。用来存放不同的值
        //存储键值对 <key, value> 类型的元素,其中各个键值对键的值不允许重复,且该容器中存储的键值对是无序的。
        //相对与map来说,map会
自动对数据排序,unordered_map不会。

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;class Solution {
public:int totalFruit(vector<int>& tree) {unordered_map<int, int> basket;//无序哈希容器。用来存放不同的值//存储键值对 <key, value> 类型的元素,其中各个键值对键的值不允许重复,且该容器中存储的键值对是无序的。//相对与map来说,map会自动对数据排序,unordered_map不会。int result = 0, len = 0;int left = 0;for (int i = 0; i < tree.size(); i++) {basket[tree[i]]++;//桶思想。len++;while (basket.size() > 2) {//超过两个桶的时候的减桶操作。basket[tree[left]]--;if (basket[tree[left]] == 0) basket.erase(tree[left]);//删桶。left++;//桶向左移动一个。len--;//减少长度。}if (result < len) {result = len;}}return result;}
};
int main() {int a[] = { 3,3,3,1,2,1,1,2,3,3,4 };vector<int> tree(a, a + sizeof(a) / sizeof(int));Solution solution;cout << solution.totalFruit(tree) << endl;
}

Leetcode 904.水果成蓝(滑动窗口,哈希容器map相关推荐

  1. 【042】904. 水果成篮[滑动窗口]

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

  2. LeetCode 904. 水果成篮

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

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

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

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

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

  5. LeetCode 904. 水果成篮(滑动窗口)

    1. 题目 在一排树中,第 i 棵树产生 tree[i] 型的水果. 你可以从你选择的任何树开始,然后重复执行以下步骤: 把这棵树上的水果放进你的篮子里.如果你做不到,就停下来. 移动到当前树右侧的下 ...

  6. leetcode 904:水果成篮(滑动窗口)

    一:题目 二:思路 1.用两个篮子装进两个数,后面只能装入这两个相同的数,并统计个数;如果遇到其他数,则重新开始计数, 这里的重新开始计数指的是在去除第一个篮子中所装进的数 2.滑动窗口来做 滑动窗口 ...

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

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

  8. LeetCode 567. 字符串的排列 (滑动窗口哈希表)

    567. 字符串的排列 题意: 第一个字符串的排列之一是第二个字符串的子串 即判断第二个字符串是否包含某个子串,这个子串的字符以及字符数量要求与第一个字符串相同 解法1 (暴力法) 按照第一个字符串的 ...

  9. 2022-7-8 Leetcode 904.水果成篮

    错误的代码: class Solution {public:int totalFruit(vector<int>& fruits) {int start = 0;int end = ...

最新文章

  1. ssh整合之六管理我们的配置文件
  2. JS显示document里所有的成员
  3. C++ :跳表数据结构的实现原理
  4. Spring Rmi配置
  5. HTML5新布局元素布局,HTML5新的布局元素
  6. linux打开python3_Python3 执行Linux Bash命令的方法
  7. 使用carbon_东华大学《Carbon》多孔碳纳米纤维复合膜,优异电磁波吸收性能!
  8. 1.1.6版本Druid连接MSSQLServer 2008 R2报错The query timeout value -1 is not valid. #2210
  9. 社交网络图中结点的“重要性”计算 (30 分)(Floyd)
  10. 服务器系统开机提示0xc000007b,0xc000007b蓝屏解决方法
  11. php获取肖前时间,实践唯物主义哲学”简介创始人:肖前、高清海等(​贰·综合哲学类4)...
  12. 《指数基金投资指南》读书笔记
  13. Zynga达成收购手机游戏开发商StarLark的协议,后者是热门游戏《Golf Rival》的开发团队
  14. 基本表改变视图不改变为什么_为什么说10万本金以下穷人玩股票一般都会赔?不改变穷人思维,还不如退出股市...
  15. ESP8266-01 MQTT固件烧录并连接阿里云服务器
  16. 58 mysql 军规_58到家MySQL军规升级版(转)
  17. ins是什么与Instagram有什么区别
  18. string数据库使用和实践第一部分string数据库介绍
  19. Linux下chrony授时监测脚本
  20. 锂离子电池的国际标准和国家标准(含安全方面IEC62133等,IEC61060电性能和UN38.3 GB4943运输存储标准)

热门文章

  1. java核心技术-jvm基础知识
  2. 【转载保存】什么是线程阻塞?为什么会出现线程阻塞?
  3. java中如何使用反射调用方法以及获得类中的属性
  4. Docker 入门使用 (二)
  5. ubuntu 系统U盘中 文件出现小锁子
  6. Joint Consensus两阶段成员变更的单步实现
  7. Flink 1.11 SQL 十余项革新大揭秘,哪些演变在便捷你的使用体验?
  8. 对话鲁直:蚂蚁金服中间件的开源头羊 | 穿山甲专访
  9. Node.js 应用故障排查手册 —— 正确打开 Chrome devtools
  10. MySQL8.0.14 - 新特性 - InnoDB Parallel Read简述