首页 > 其他 > 详细

LeetCode #605. Can Place Flowers

时间:2020-11-03 10:16:15      阅读:26      评论:0      收藏:0      [点我收藏+]

题目

605. Can Place Flowers


解题方法

只看数组中第一个位置,如果是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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!