本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!