Java実装LeetCode 605の花の問題(国境問題)

605ガーデニングの質問

花が植えられたプロットの一部、あなたが長い花壇があると、他の部分はしませんでした。花は、彼らが水を競う、隣接する土地に成長することはできませんしかし、両方が死んでしまいます。

花壇(0は植栽の花を表していない0と1を含む配列、として表さ、花は1を表し植え)、及び数nを与えられました。あなたは、n個の植栽の花のルールを壊すことなく成長することができますか?ない場合はTrue、Falseを返すことができます。

例1:

入力:花壇= [1,0,0,0,1]、N = 1
出力:真
例2:

入力:花壇= [1,0,0,0,1]、N = 2
出力:偽
注:

良い種植えられた花の配列内のルールに違反しません。
入力配列の長さ[1、20000]。
nは負でない整数であり、入力配列のサイズを超えません。

PS:
に対処するための国境問題、両方に左端と右端はまた、0または直接計算を追加することができます

class Solution {
     public boolean canPlaceFlowers(int[] flowerbed, int n) {
        int count=0;
        int can = 0;
        int first = 0;
        while(first<flowerbed.length&&flowerbed[first]==0){
            first++;
            count++;
        }
        if(first==flowerbed.length){
                return (flowerbed.length+1)/2>=n;
        }
        can+=count/2;
        count=0;
        for(int i=first+1;i<flowerbed.length;i++){
            if(flowerbed[i]==1){
                    can+=(count-1)/2;
                    count=0;
            } else{
                count++;
            }
        }
        can+=count/2;
        return can>=n;
    }
}
リリース1675元の記事 ウォンの賞賛20000 + ビュー318万+

おすすめ

転載: blog.csdn.net/a1439775520/article/details/105199819