水果篮一般装几种水果_one step closer水果篮子

水果篮一般装几种水果_one step closer水果篮子904.水果成篮题目描述题目链接:904水果成蓝你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组fruits表示,其中fruits[i]是第i棵树上的水果种类。你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:你只有两个篮子,并且每个篮子只能装单一类型的水果。每个篮子能够装的水果总量没有限制。你可以选择任意一棵树开始采摘,你必须从每棵树(包括开始采摘的树)上恰好摘一个水果。采摘的水果应当符合篮子中的水果类型。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

904. 水果成篮

题目描述

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

解题思路

树由整数数组fruits表示,其中水果[i]是第i棵树产生的水果类型。 你想收集尽可能多的水果。但是,所有者有一些严格的规则,您必须遵守: 你只有两个篮子,每个篮子只能装一种水果。每篮水果的数量没有限制。 从您选择的任何一棵树开始,您必须在向右移动时从每棵树(包括起始树)中恰好摘下一个水果,摘下的水果必须放在你的一个篮子里。 一旦你到了一棵树上,树上的果实没法放入你的篮子(两个篮子已经满了),你必须停下来。 给定整数数组水果,返回可以拾取的最大水果数。 本题,其实就是选只有两个元素的最长连续子序列,比如1,2,3,2,2最长就是2,3,2,2(只包括2或者3,而且是最长的)。

代码演示–暴力解法

def totalFruit(fruits):
    """ :type fruits: List[int] :rtype: int """
    res = 0
    num = []

    for i in range(len(fruits)):
       j = i
        while (len(set(num)) <= 2 and j < len(fruits)):
            num.append(fruits[j])
            j += 1

        if(len(set(num)) <= 2 ):
            res = max(res, len(num))
        elif(len(set(num)) == 3):
            res = max(res,len(num) - 1)


        del num[:]

    return res



# fruits = [1,2,1]
# fruits = [0,1,2,2]
# fruits = [1,2,3,2,2]
# fruits = [3,3,3,1,2,1,1,2,3,3,4]
fruits =   [1,1]
r = totalFruit(fruits)
print(r)

超时间限制,呜呜呜

代码演示–滑动窗口

class Solution:
    def totalFruit(self, fruits: List[int]) -> int:
        if(len(fruits) == 1 or len(fruits) == 2):
            return len(fruits)
        
        # 记录当前篮子里的水果
        basket1 = -1
        basket2 = -1
        sum = 0
        # 记录当前的水果和当前水果的起始位置
        curfruit = -1
        curfruitloc = 0
        subsum = 0

        # 当前篮子起始位置
        index = 0

        for i in range(len(fruits)):
            if(fruits[i] == basket1 or fruits[i] == basket2):
                if(fruits[i] != curfruit):
                    curfruit = fruits[i]
                    curfruitloc = i
            else:
                index = curfruitloc
                curfruitloc = i
                if(basket1 == curfruit):
                    basket2 = fruits[i]
                    curfruit = basket2
                else:
                    basket1 = fruits[i]
                    curfruit = basket1
            subsum = i - index + 1
            sum = sum if sum > subsum else subsum
        return sum

在这里插入图片描述

参考

链接:https://leetcode-cn.com/problems/fruit-into-baskets

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193273.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 白盒测试用例设计方法有哪些_软件测试语句覆盖测试用例

    白盒测试用例设计方法有哪些_软件测试语句覆盖测试用例白盒测试设计方法编写:天林问题:白盒测试方法的概念及应用场景白盒测试方法用各种逻辑覆盖法来和设计白盒测试用例使用基本路径法来设计白盒测试用例内容:白盒测试的基本介绍白盒测试用例设计方法静态设计方法动态设计方法一、白盒测试的概念及特点1、什么是白盒测试代码逻辑的测试白盒测试,又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师需深入考察程序代码的内部结构、逻辑设计等。对于白盒测试工程师来说,软件产品内部构成是透明的。下列代码是

    2022年10月12日
  • 组合之分苹果问题(22)[通俗易懂]

    组合之分苹果问题(22)[通俗易懂]1问题将n个苹果分给m个人,苹果都一样,人都一样。如果把4个苹果分给3个人,121112211是一种可能。问一共有多少种方法。2分析1当苹果比人数少时,就等同于将等数量的苹果分给等数量的人,因为人数较多,空的人都一样,所以做等效处理。比如2个苹果分给3个人和2个苹果分给2个人结果是一样的。2当苹果数<=人数时,等效于:有人没有苹果和所有人都分到苹果两种可能,然…

    2022年10月11日
  • IOS越狱学习总结

    IOS越狱学习总结iOS越狱iOS越狱(iOSJailbreaking),是用于获取苹果公司便携装置操作系统iOS最高权限的一种技术手段,用户使用这种技术及软件可以获取到iOS的最高权限,甚至可能可以进一步解开运营商对手机网络的限制。中文名称iOS越狱外文名称iOSJailbreaking应  用电子产品类  型软件目录1简介2用途3针对的设备

    2022年7月26日
  • 五分钟免费获得自己的永久域名,免费!永久!

    五分钟免费获得自己的永久域名,免费!永久!一分钟教你免费获得自己的域名,由于是免费的,所以可能过程较慢。过程很简单,如果有什么步骤不会可以联系我哦:jenson_97@163.com一、首先进入到Ngrok官网点击右上角的注册,获得账号后登录到该网站进去。二、进入左侧功能栏的隧道管理->开通隧道,选择一个免费的服务器点击购买即可。三、填写基本信息填完基本信息之后点击确定添加,页面跳转之后点击确定开通。四、开通成功之后点击隧道管理就可以看到自己注册的域名了。五、再次进入到Ngrok官网首页,点击客户端下载(选择自己的系统的对

    2022年5月2日
  • python 中os模块os.path.exists()含义

    python 中os模块os.path.exists()含义os即operatingsystem(操作系统),Python的os模块封装了常见的文件和目录操作。os.path模块主要用于文件的属性获取,exists是“存在”的意思,所以顾名思义,os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径。举个栗子:user.py为存在于当前目录的一个文件输入代码:importospath…

    2022年7月12日
  • Flutter Mac 安装全教程(Android / iOS)

    Flutter Mac 安装全教程(Android / iOS)本文来自于:https://flutter.io/docs/get-started/install/macos目录下载Flutter设置环境变量Flutter命令安装编辑IDE下载Flutterhttps://flutter.io/docs/development/tools/sdk/archive在这里获取Flutter的安装包,推荐使用stablechanne…

    2022年5月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号