605. Can Place Flowers


Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, flowers cannot be planted in adjacent plots - they would compete for water and both would die.


Given a flowerbed (represented as an array containing 0 and 1, where 0 means empty and 1 means not empty), and a number n, return if n new flowers can be planted in it without violating the no-adjacent-flowers rule.


Example 1:


Input: flowerbed = [1,0,0,0,1], n = 1
Output: True

Example 2:


Input: flowerbed = [1,0,0,0,1], n = 2
Output: False

Note:


    1. The input array won't violate no-adjacent-flowers rule.
    2. The input array size is in the range of [1, 20000].
    3. n is a non-negative integer which won't exceed the input array size.




class Solution(object):
    def canPlaceFlowers(self, flowerbed, n):
        """
        :type flowerbed: List[int]
        :type n: int
        :rtype: bool
        """
        l = len(flowerbed)
        if(l==1):
            if((flowerbed[0]==0 and n==1) or n==0):
                return True
            else:
                return False
        if(flowerbed[0]==0 and flowerbed[1]==0):
            flowerbed[0]=1
            n -= 1
        if(flowerbed[l-1]==0 and flowerbed[l-2]==0):
            flowerbed[l-1]=1
            n -= 1
        for i in range(1,l-2):
            if(flowerbed[i]==0 and flowerbed[i-1]==0 and flowerbed[i+1]==0):
                flowerbed[i]=1
                n -= 1
        if n<=0:
            return True
        else:
            return False

 


posted @ 2017-10-26 15:32  bernieloveslife  阅读(131)  评论(0编辑  收藏  举报