假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给你一个整数数组  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 * 104
  • flowerbed[i] 为 0 或 1
  • flowerbed 中不存在相邻的两朵花
  • 0 <= n <= flowerbed.length

Python 解答:

class Solution:
    def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
        total = 0
        pre = -1
        i = 0
        while i < len(flowerbed):
            if flowerbed[i] == 1:
                if pre == -1:
                    total += (i-pre-1) // 2
                else:
                    total += (i-pre-2) // 2
                pre = i
            i += 1
        if pre == -1:
            total += (i-pre)//2
        else:
            total += (i-1-pre)//2
        return True if total >= n else False
最后修改日期: 2021年5月23日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。