种植花朵
Input: flowerbed = [1,0,0,0,1], n = 1
Output: True
题目描述:
flowered数组中1表示已经种下了花朵。花朵之间至少需要一个单位的间隔,求解能否种下n多花。
思路分析:
访问到flowered[i]为0,则查看flowered[i-1]和flowered[i+1]是否为零,如果满足前后都为0,则可以在坐标i种下一朵花。
代码:
public boolean canPlaceFlowers(int []flowerbed,int n){
int len=flowerbed.length;
int cnt=0;//记录可以种下的花朵数
if(len==0)
return false;
for(int i=0;i<len&&cnt<n;i++){
if(flowerbed[i]==1)
continue;
int pre=i==0?0:flowerbed[i-1];
int next=i==len-1?0:flowerbed[i+1];
if(pre==0&&next==0){
cnt++;
flowerbed[i]=1;
}
}
return cnt>=n;
}