605. 种花问题

题目:

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

给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。

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

示例:

image.png

思路:

贪心算法
只要找到0,就判断它前后是否为0;

代码:

class Solution {
    public boolean canPlaceFlowers(int[] flowerbed, int n) {
        if (flowerbed.length == 0) return false;
        int p = 0;
        while (n > 0 && p < flowerbed.length) {
            //只要找到0,就判断它前后是否为0
            if (flowerbed[p] == 0) {
                //p-1 == -1 代表在开头;p+1==length代表在结尾。
                if ((p - 1 == -1 || flowerbed[p - 1] == 0 ) && (p + 1 == flowerbed.length || flowerbed[p + 1] == 0)) {
                    //如果是,就种花
                    flowerbed[p] = 1;
                    //花的数量就减一
                    n --;
                } 
                
            }
            p ++;
            
            
        }
        if (n == 0) return true;
        return false;
    }
}

时间复杂度:O(n),空间复杂度:O(1)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺...
    池鱼_故渊阅读 223评论 0 1
  • 题目 难度:★★☆☆☆类型:数组 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在...
    玖月晴阅读 1,088评论 0 0
  • 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者...
    华小锐阅读 872评论 0 3
  • 605 Can Place Flowers 种花问题 Description:Suppose you have a...
    air_melt阅读 232评论 1 0
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,402评论 0 2