605 種花問題

2021-08-26 23:50:24 字數 1399 閱讀 7200

給定乙個花壇(表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花),和乙個數 n 。能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回false。

示例 1:

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

輸出: true

示例 2:

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

輸出: false

注意:

陣列內已種好的花不會違反種植規則。

輸入的陣列長度範圍為 [1, 20000]。

n 是非負整數,且不會超過輸入陣列的大小。

主題時考慮分為開頭、結尾和中部,因為開頭結尾只需要又兩個連續的0就可以種一棵花,種於邊界為最佳;而中部需要3個連續的0才能種一棵花,程式中就先處理了開頭和結尾,然後再遍歷中部,最後統計最大數量cnt是否大於等於n就可以了。開頭是對長度為1以及0的情況討論。

class

solution:

defcanplaceflowers

(self, flowerbed, n):

""" :type flowerbed: list[int]

:type n: int

:rtype: bool

"""if len(flowerbed) == 1:

if (flowerbed[0] == 0

and n==1) or (n==0):

return

true

else:

return

false

elif len(flowerbed) == 0:

if n == 0:

return

true

else:

return

false

cnt = 0

if flowerbed[0:2].count(0) == 2:

cnt += 1

flowerbed[0] = 1

if flowerbed[-1:-3:-1].count(0) == 2:

cnt += 1

flowerbed[-1] = 1

for i in range(1,len(flowerbed)-1):

if flowerbed[i-1] == flowerbed[i] == flowerbed[i+1] == 0:

cnt += 1

flowerbed[i] = 1

if cnt >= n:

return

true

else:

return

false

605 種花問題

假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給定乙個花壇 表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花 和乙個數 n 能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回false。示...

605 種花問題

解題思路 解決本題需考慮以下三種情況 1.第一種情況 n 0,直接返回true 2.第二種情況 陣列中的元素全是0。在不打破種植規則的情況下種入n朵花,至少需要 2 n 1 個連續0,所以只要陣列長度 2 n 1就返回true,否則返回false 3.第三種情況 n 0且陣列中有1又有0。此時又需要...

605 種花問題

題目描述 假設你有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花卉不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給定乙個花壇 表示為乙個陣列包含0和1,其中0表示沒種植花,1表示種植了花 和乙個數 n 能否在不打破種植規則的情況下種入 n 朵花?能則返回true,不能則返回fa...