904. Fruit Into Baskets

2023-10-24 11:44
文章标签 fruit baskets 904

本文主要是介绍904. Fruit Into Baskets,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

904. Fruit Into Baskets

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:

原题链接:

904. Fruit Into Baskets

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

完成情况:

在这里插入图片描述

解题思路:

连续数组 -> 滑动窗口   -> 右边正常移动,左边框定起始边界进行移动.

题目有点傻逼,翻译成英文就能看懂了。

总结就是一句话: 求最长的只包含两种类型的连续子数组的最大长度

数组里面的0,1,2,3,4,5
表示的是,它是第ABCDE种水果
然后最多只能有两种水果。

参考代码:

package 日常Java程序测试.代码随想录.数组;import java.util.HashMap;
import java.util.Map;public class __904FruitIntoBaskets {/*** 求最长的只包含两种类型的连续子数组的最大长度* @param fruits* @return*/public int totalFruit(int[] fruits) {   //连续数组 -> 滑动窗口   -> 右边正常移动,左边框定起始边界进行移动.int n = fruits.length;Map<Integer,Integer> cnt = new HashMap<Integer,Integer>();int left = 0,res = 0;for (int right = 0;right < n;++right){cnt.put(fruits[right],cnt.getOrDefault(fruits[right],0) + 1);while (cnt.size() > 2){cnt.put(fruits[left],cnt.get(fruits[left]) - 1);if (cnt.get(fruits[left]) == 0){cnt.remove(fruits[left]);}++left;}res = Math.max(res,right - left + 1);}return res;}
}

这篇关于904. Fruit Into Baskets的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/274925

相关文章

904.水果成篮

题目 链接:leetcode链接 思路分析(滑动窗口) 读完题目,很明显,这个题目需要我们寻找一个最长子数组,使得这个子数组里面最多存在两种不同的数字,很容易联想到使用滑动窗口。 另外,需要使用hash表来记录区间内的不同种水果的个数 首先还是left,right = 0; 进窗口:right进哈希表 判断:哈希表的size > 2,就需要出窗口 出窗口:hash[left]–的同时,

如何使用Box2D和Cocos2D制作一款像Fruit Ninja一样的游戏-第2部分

这是教你如何制作一款像Halfbrick Studios公司的Fruit Ninja一样的切割精灵游戏系列教程的第2篇。 在第1篇中,你学会了如何创建纹理多边形,并基于它制作了一个西瓜。 在第1部分中所做的努力将在第2部分中收到回报,在此部分中,你将能够切割sprite。 和第1部分一样,本篇教程需要你熟悉Cocos2D和Box2D。如果你是刚刚接触它们的话,请先学习本网站的Coco

如何使用Box2D和Cocos2D制作一款像Fruit Ninja一样的游戏-第1部分

在本篇教程中,你将学到如何制作一个切图片的游戏,像Halfbrick Studios制作的Fruit Ninja一样,我们使用的工具是强大的Cocos2D和Box2D,以及一些预先做好的工具。 在大多数切东西的游戏中,当你画一条线划过一个图片精灵时,他们的做法基本上是把图片精灵转变为两个预先画好的被从中间切开的图片精灵,而并不会依照你划过的实际位置。 但是本篇教程将演示一个更cool的技

Leet code 904 水果成篮

解题思路:滑动窗口 创建hash表记录水果的种类和数量  两个指针left 和 right 从数组起始位置开始滑动,right在循环内++ hash[fruits[right]]++  进窗口 然后判断 hash表中的种类是否大于2 一旦大于2就要想办法出窗口  出窗口需要将hash表中种类重回2种 这时候就要动用left指针 然后更新结果  代码如下 class Soluti

HDOJnbsp;nbsp;2152nbsp;nbsp;nbsp;Fruit

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2152 题目大意为:要买由M个水果组成的水果拼盘,不过我有个小小的要求, 对于每种水果,个数上我有限制, 既不能少于某个特定值,也不能大于某个特定值 而且我不要两份一样的拼盘。你随意搭配,你能组出多少种不同的方案 #include <stdio.h> #include <string.h> int c1[

C++刷题笔记(4)——leetcode209、904

题目1:209.长度最小的子数组 暴力解法 解题思路: 用两个for循环,外层for循环负责做子序列的起点,内层for循环负责遍历数组,寻找符合条件的子序列 然后外层for循环移动子序列的起点,继续再数组中寻找新的符合条件的子序列,并与之前找到的子序列长度做比较 时间复杂度O(n^2) class Solution {public:int minSubArrayLen(int tar

904. 虫洞(spfa判断负环模板题)

904. 虫洞 - AcWing题库 农夫约翰在巡视他的众多农场时,发现了很多令人惊叹的虫洞。 虫洞非常奇特,它可以看作是一条 单向 路径,通过它可以使你回到过去的某个时刻(相对于你进入虫洞之前)。 农夫约翰的每个农场中包含 N 片田地,M 条路径(双向)以及 W 个虫洞。 现在农夫约翰希望能够从农场中的某片田地出发,经过一些路径和虫洞回到过去,并在他的出发时刻之前赶到他的出发地。 他希

HDU 4000 Fruit Ninja

参看资料: https://blog.csdn.net/keepcoral/article/details/80550168 题目: Recently, dobby is addicted in the Fruit Ninja. As you know, dobby is a free elf, so unlike other elves, he could do whatever h

leetcode---904. 水果成篮 -- 【滑动窗口/c++】

原题:904. 水果成篮 - 力扣(LeetCode) 题目解析: 本题中的fruit数组中的元素表示的是数的种类。如示例1,fruit【1,2,1】就表示下标0处有1号类型的树,下标1处有2号类型的树,下标2处有1号类型的树。 而最多只能摘两种类型的果子,在示例1中就是,从下标0开始 有 1,2,1可以摘遍所有树;或者从下标1开始 有 2,1只能摘两颗树。所以在示例

【优选算法系列】【专题二滑动窗口】第三节.904. 水果成篮和438. 找到字符串中所有字母异位词

文章目录 前言一、水果成篮      1.1 题目描述      1.2 题目解析           1.2.1 算法原理           1.2.2 代码编写           1.2.3 题目总结二、找到字符串中所有字母异位词      2.1 题目描述      2.2 题目解析           2.2.1 算法原理           2.2.2 代码编写