思路:
1.将能种的地方都种上树,每种一个树n--,最后比较n与0的值,类似于回溯思想,如果种在不能种的位置再拔掉
2.注意判断边界条件
代码如下,时间复杂度O(n)
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
boolean fz = false;//如果种了,变为true
boolean isOne = false;//判断上一个是否为1,如果上一个种树了,那也当做1处理
for(int i=0;i<flowerbed.length;i++)
{
if(flowerbed[i]==0)
{
if(i==0)
{
n--;
fz=true;
}else
{
if(isOne == true)
{
isOne=false;
continue;
}else if(fz==true){
isOne=false;
fz=false;
continue;
}else{
n--;
fz=true;
}
}
}else
{
if(fz==true)
{
n++;
fz=false;
}
isOne = true;
}
}
if(n<=0)
{
return true;
}
return false;
}
}