溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

leetcode怎么解決種花問題

發(fā)布時間:2021-12-15 14:42:39 來源:億速云 閱讀:147 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“l(fā)eetcode怎么解決種花問題”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“l(fā)eetcode怎么解決種花問題”吧!

一、題目內(nèi)容

假設(shè)有一個很長的花壇,一部分地塊種植了花,另一部分卻沒有??墒牵ú荒芊N植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。

給你一個整數(shù)數(shù)組  flowerbed 表示花壇,由若干 0 和 1 組成,其中 0 表示沒種植花,1 表示種植了花。另有一個數(shù) n ,能否在不打破種植規(guī)則的情況下種入 n 朵花?能則返回 true ,不能則返回 false。

示例 1:

輸入:flowerbed = [1,0,0,0,1], n = 1
輸出:true

示例 2:

輸入:flowerbed = [1,0,0,0,1], n = 2
輸出:false

提示:

1 <= flowerbed.length <= 2 * 104
flowerbed[i] 為 0 或 1
flowerbed 中不存在相鄰的兩朵花
0 <= n <= flowerbed.length

二、解題思路

這里提供兩種思路:

1.每次看當(dāng)前的位置是否有花,沒有就的話再看看是不是最后一個位置或者當(dāng)前位置的下一個是否也沒有花,滿足的話就種花,否則看下一個位置。注意,每次循環(huán)隔一個看一個;

2.兩端加0然后只要連續(xù)出現(xiàn)三個0就在中間位置種花;

最后判斷剩下的花的數(shù)量是否小于等于0即可。

三、代碼

class Solution:
    def canPlaceFlowers1(self, flowerbed: list, n: int) -> bool:
        i = 0
        while i < len(flowerbed):
            if flowerbed[i] == 0:
                if i == len(flowerbed) - 1 or flowerbed[i + 1] == 0:
                    n -= 1
                else:
                    i += 1
            i += 2
        return n <= 0

    def canPlaceFlowers2(self, flowerbed: list, n: int) -> bool:
        tmp = [0] + flowerbed + [0]
        for i in range(1, len(tmp) - 1):
            if tmp[i - 1] == 0 and tmp[i] == 0 and tmp[i + 1] == 0:
                tmp[i] = 1
                n -= 1
        return n <= 0


if __name__ == '__main__':
    flowerbed = [0, 0, 1, 0, 1]
    n = 1
    s = Solution()
    ans1 = s.canPlaceFlowers1(flowerbed, n)
    print(ans1)
    ans2 = s.canPlaceFlowers2(flowerbed, n)
    print(ans2)

感謝各位的閱讀,以上就是“l(fā)eetcode怎么解決種花問題”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對leetcode怎么解決種花問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI