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

    在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……
  • 相关阅读:
    德信创业系2014版
    [学习笔记]矩形面积并
    第六章 深入分析ClassLoader工作机制
    第五章 深入class文件结构
    设计模式
    第四章 Javac编译原理
    第三章 深入分析Java Web中的中文编码问题
    第2章 深入分析java I/O的工作机制(下)
    linnx常用命令学习
    jenkins学习(1)
  • 原文地址:https://www.cnblogs.com/huangzs/p/14894581.html
Copyright © 2020-2023  润新知