LeetCode种花问题Swift

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

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

思路:

连续三个空花盆 ,遇到000 ,可以种一株花,能种就先种上。
最开始和后的花盆需要特殊考虑 通过前后补0来消除这种特殊性

花盆现状 还能种几株 首尾加0后
1 0 010
0 1 000
00 1 0000
01 0 0010
10 0 0100
11 0 0110

解法:

class Solution {
    func canPlaceFlowers(_ flowerbed: [Int], _ n: Int) -> Bool {
        var flowerbed = [0] + flowerbed + [0]
        //能种的最大数目
        var count = 0
        for i in 1...flowerbed.count - 2 {
            if flowerbed[i] == 0 && flowerbed[i-1] == 0 && flowerbed[i+1] == 0 {
                //能种就给种上
                flowerbed[i] = 1
                //计数加1
                count += 1
            }
        }
        return n <= count
    }
}

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/can-place-flowers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……
原文地址:https://www.cnblogs.com/huangzs/p/14894581.html