假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个整数数组 flowerbed 表示花坛,由若干 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 <= flowerbed.length <= 2 * 104flowerbed[i]为0或1flowerbed中不存在相邻的两朵花0 <= n <= flowerbed.length
ac代码:
class Solution:
def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
#连续3个0表示可以种一朵花,只需要计算有多少连续3个0即可
flowerbed=[0]+flowerbed+[0]
length=len(flowerbed)
threee_zero=0
i,j=-1,0
while j<length-1:
if flowerbed[j]==0:
j+=1
if flowerbed[j]==1:
i=j
j+=1
if j-i==3:
threee_zero+=1
i=j-1
return threee_zero>=n
注:i为什么会赋值为-1,当flowerbed=[0,0,1,0,1],n=1的时候,由于在数组前后各加了一个0,所以数组变为[0,0,0,1,0,1,0],此时就有1个连续的三个零
文章讨论了如何在给定的花坛中,满足花朵不相邻的规则下,确定最多能种植多少朵花的问题。通过编程实现,检查连续3个空地来计算可行的种植位置。

363

被折叠的 条评论
为什么被折叠?



