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;
}
}