只看数组中第一个位置,如果是1就移除一个0和一个1,这时候如果数组中只有1个数了,就break掉返回;如果是0,则看看数组中是不是只有一个数且只需要再插一个花,如果是则break掉返回True,不是则返回False,如果数组中还有很多数,则判断下一个位置是0还是1,如果是1则移除掉当前位置的0,如果是0则插花,设置当前位置为1并将待插花个数减一,然后判断是否插完即可。
时间复杂度:O(n)
空间复杂度:O(1)
class Solution:
def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
if not n:
return True
rat = False
i = 0
while i < len(flowerbed):
if flowerbed[i]:
if len(flowerbed) == 1:
break
else:
flowerbed.remove(1)
flowerbed.remove(0)
else:
if len(flowerbed) == 1:
if n == 1:
rat = True
break
elif not flowerbed[i+1]:
flowerbed[i] = 1
n -= 1
if not n:
rat = True
break
else:
flowerbed.remove(0)
return rat
LeetCode #605. Can Place Flowers
原文:https://www.cnblogs.com/RatsCommander/p/13917923.html