605. 种花问题

Posted yangbocsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了605. 种花问题相关的知识,希望对你有一定的参考价值。

605. 种花问题

一、题目

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

给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。

二、参考代码

// 判断 flowerbed.length = 1 的情况


class Solution 
    public boolean canPlaceFlowers(int[] flowerbed, int n) 
        int ans = 0;
        // if(flowerbed.length == 1)
        //     if(flowerbed[0] == 1)
        //         if(n==0)
        //             return true;
        //         else
        //             return false;
        //         
        //     else
        //         // flowerbed[0] == 0
        //         if(n==1 || n==0)
        //             return true;
        //         else
        //             return false;
        //         
        //     
        // 

        // 判断 flowerbed.length = 1 的情况
        if(flowerbed.length == 1)
            if(flowerbed[0] + n > 1)
                return false;
            else
                return true;
            
         


        // 边界处理   前两个都是  [0,0,....]的情况
        if(flowerbed[0] == 0 && flowerbed[1] == 0)
            flowerbed[0] = 1;
            ans +=1;
        

		// 中间正常部分的处理
        for(int i = 1; i < flowerbed.length - 1; i++)
            if(flowerbed[i-1] != 1 && flowerbed[i+1] !=1 && flowerbed[i] == 0)
                flowerbed[i] = 1;
                ans ++;
            
        

        // 末尾边界    后两个都是  [....0,0]的情况
        if(flowerbed[flowerbed.length - 1] == 0 && flowerbed[flowerbed.length - 1 - 1] ==0)
            flowerbed[flowerbed.length - 1] = 1;
            ans ++;
        

        return ans >= n;

    


以上是关于605. 种花问题的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 605.种花问题

605. 种花问题

605. 种花问题

LeetCode 605 种花问题(贪心)

防御式编程

LeetCode种花问题