LeetCode0605.CanPlaceFlowers[Easy][Python][Greedy]问题LeetCode假设你有一个长长的花坛,其中有些地块种了一些地块,有些地块没有种,但是不能种花在相邻的地块中-他们会争夺水,并且都会死。给定一个花坛(表示为包含0和1的数组,其中0表示空,1表示不空)和一个数字n,返回是否可以在其中种植n朵新花而不违反无相邻花规则。示例1:Input:flowerbed=[1,0,0,0,1],n=1Output:TrueExample2:Input:flowerbed=[1,0,0,0,1],n=2Output:False注:输入数组不会违反不相邻花规则。输入数组大小在[1,20000]范围内。n是一个非负整数,不会超过输入数组大小。问题是假设你有一个很长的花坛,地块的一部分种有花,而另一部分没有。但是,相邻的地块不能种花,它们会争水而死。给定一个花坛(表示为包含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是一个非负整数,不会超过输入数组的大小。ThinkingGreedy从反面来看,有三种情况不能种花:当前位置有花位不是头,左边有花位不是尾,还有右边的花。在其他情况下,可以种花。时间复杂度:O(len(flowerbed))空间复杂度:O(1)Python代码classSolution(object):defcanPlaceFlowers(self,flowerbed,n):""":typeflowerbed:List[int]:typen:int:rtype:bool"""ifnotflowerbedorlen(flowerbed)==0:returnFalsecnt=0forplotinrange(len(flowerbed)):#range:0-len(flowerbed)-1ifflowerbed[plot]==1:#已经种植的花继续ifplot>0andflowerbed[plot-1]==1:#剩下的花继续种植ifplot
