904. 水果成篮

摘要:
https://leetcode-cn.com/problems/fruit-into-baskets/暴力法则:timeout functotalFruit(tree[]int)int{res:=0n:=len(tree)i,j:=0,0fori=0;i˂n;i++{pre1,pre2:=-1,-1forj=i;j˂n;j++{ifpre1==-1||pre1==tree[j]{pre1=tree[j]con

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

暴力法:超时

func totalFruit(tree []int) int {
    res := 0 
    n := len(tree)
    i,j := 0,0
    for i=0;i<n;i++{
        pre1,pre2 := -1,-1
        for j=i;j<n;j++{
            if pre1 == -1 || pre1 == tree[j]{
                pre1 = tree[j]
                continue
            }else if pre2 == -1 || pre2 == tree[j]{
                pre2 = tree[j]
                continue
            }else{
                if tree[j] == pre1 || tree[j] == pre2{
                    continue
                }
                res = MAX(res,j-i)
                break
            }
        }
        res = MAX(res,j-i) 
    }
    return res
}

func MAX(i,j int) int{
    if i<j{
        return j
    }else{
        return i
    }
}

  用滑动窗口优化下时间复杂度:最主要一点,

tRight := right-1
pre1 = tree[tRight]
pre2 = tree[right]
func totalFruit(tree []int) int {
    res := 0 
    n := len(tree)
    left,right := 0,0
    pre1,pre2 := -1,-1
    for right < n{
        if pre1 == -1 || pre1 == tree[right]{
            pre1 = tree[right]
            right++
            continue
        }else if pre2 == -1 || pre2 == tree[right]{
            pre2 = tree[right]
            right++
            continue
        }else{
            res = MAX(res,right-left)
            tRight := right-1
            pre1 = tree[tRight]
            pre2 = tree[right]
            for tree[tRight] == pre1{
                tRight--
            }
            left = tRight+1
        }
    }
    res = MAX(res,right-left)
    return res
}

func MAX(i,j int) int{
    if i<j{
        return j
    }else{
        return i
    }
}

  

免责声明:文章转载自《904. 水果成篮》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇php中GD库的一些简单使用Drawable和Bitmap的区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

如何查看Oracle,MySQL,SQLServer三大数据库的事务隔离级别

1:mysql的事务隔离级别查看方法mysql最简单,执行这条语句就行:select@@tx_isolation详情:1.查看当前会话隔离级别select@@tx_isolation;2.查看系统当前隔离级别select@@global.tx_isolation;3.设置当前会话隔离级别setsessiontransactionisolatinlevelre...

Debian 命令行方式配置网络

确保未在文件/etc/network/interfaces中手动配置网络,即应删除上述1和2中配置的内容。打开nmtui的图形界面并直接进行配置。当然,您也可以在此处设置无线连接。...

ps图层组快捷键 一次打开或关闭所有的顶级图层组

这些快捷键是:·按Ctrl键并单击顶层图层组的箭头,可同时打开/关闭所有顶层图层组。...

Flutter——数组以符号隔开转字符串

///数组转换为字符串StringgetTaskScreen(Listlist){ListtempList=List();Stringstr='';List.forEach((f){tempList.add(f.title);});临时列表。forEach((f){if(str==“”){str=“$f”;}否则{str=“$str”,“$f”;}});re...

easyexcel导出两种方式response返回文件流下载和保存到服务器返回下载链接

1、response方式返回excel文件流@GetMapping("/exportExcel")publicvoidexportExcel(@RequestParam(value="menu")Stringmenu,@RequestParam(value="dwflglId")intdwflglId,@RequestParam(value="qjCode"...

解决ubuntu下字体模糊的问题

最近,在ubuntu下使用firefox时,字体总是有点模糊。我搜索了大部分字体,以找到解决问题的方法。据说,这个问题的原因是网站本身设置了字体,这些字体通常在Windows下设置,因此在Linux下字体看起来是虚拟的。对应的中文应该是:编辑=˃选项=˃内容=˃字体和颜色=˃允许网页选择自己的字体。...