力扣刷題記錄 陣列 簡單 605種花問題

2021-09-25 20:41:50 字數 2781 閱讀 3123

給定乙個由0和1組成的陣列表示花壇,其中0表示沒種花,1表示植了花。要再向花壇中種n朵花,要求:相鄰花壇不能同時種花。能否在不打破種植規則的情況下種入 n 朵花。

錯誤解答

class

solution

(object)

: def canplaceflowers

(self, flowerbed, n)

:"""

:type flowerbed: list[int]

:type n: int

:rtype: bool

"""count =

0for i in

range(0

,len

(flowerbed)):

if flowerbed[i]==0

: count +=

1if flowerbed[i]

==1 and count>2:

count = count -

2if count==1:

max_num =

1else

: max_num =

round

(count/2)

n = n - max_num

if n >0:

return false

if n<=0:

return true

沒有考慮到全為0的情況

錯誤解答

class

solution

(object)

: def canplaceflowers

(self, flowerbed, n)

:"""

:type flowerbed: list[int]

:type n: int

:rtype: bool

"""count =

0for i in

range(0

,len

(flowerbed)):

if flowerbed[i]==0

: count +=

1if flowerbed[i]

==1 and count>2:

count = count -

2if count==1:

max_num =

1else

: max_num =

round

(count/2)

n = n - max_num

# 全為0的情況

if count>2:

count = count -

2if count==1:

max_num =

1else

: max_num =

round

(count/2)

n = n - max_num

if n >0:

return false

else

:return true

遇到1以後沒有對count進行更新,如[1,0,1,0,1,0]的情況,迴圈結束後count為3

錯誤解答

class

solution

(object)

: def canplaceflowers

(self, flowerbed, n)

:"""

:type flowerbed: list[int]

:type n: int

:rtype: bool

"""count =

0 block = count

for i in

range(0

,len

(flowerbed)):

if flowerbed[i]==0

: count +=

1if flowerbed[i]==1

: block = count

count =

0if block>2:

block = block -

2if block==1:

max_num =

1else

: max_num =

round

(block/2)

n = n - max_num

if count==1:

return false

if count>2:

block = count

block = block -

2if block==1:

max_num =

1else

: max_num =

round

(block/2)

n = n - max_num

if n >0:

return false

if n <=0:

return true

測試用例[1,0,0,0,0,0,1] 2

我用spyder執行時輸出結果是true,但是力扣上執行輸出結果是false,原因未知。

原因找到了:列表內元素型別為int整型,block/2只取整數部分。

沒有考慮到一開始就為0的情況,如[0,0,1],1

力扣 605 種花問題

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

力扣605 種花問題

題目鏈結 題目不是難題,但是需要注意一些細節 如下 思路 即每次可以種花的位置為初始為0,or末尾為0,or臨近點為0的位置 即每次可以種花的位置為初始為0,or末尾為0,or臨近點為0的位置 class solution i return count n 根據題意很容易寫出上述的 直觀且簡潔,但我...

(力扣)第605 種花問題

題目要求 假設有乙個很長的花壇,一部分地塊種植了花,另一部分卻沒有。可是,花不能種植在相鄰的地塊上,它們會爭奪水源,兩者都會死去。給你乙個整數陣列 flowerbed 表示花壇,由若干 0 和 1 組成,其中 0 表示沒種植花,1 表示種植了花。另有乙個數 n 能否在不打破種植規則的情況下種入 n ...