zoukankan      html  css  js  c++  java
  • 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
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……
  • 相关阅读:
    联考20200725 T1 String
    联考20200723 T1 数
    联考20200722 T3 积木
    联考20200722 T2 ACT4!无限回转!
    联考20200722 T1 集合划分
    联考20200721 T2 s2mple
    联考20200721 T1 s1mple
    联考20200719 T2 寻找规律
    联考20200719 T1 合并奶牛
    联考20200718 T2 树论
  • 原文地址:https://www.cnblogs.com/huangzs/p/14894581.html
Copyright © 2011-2022 走看看