解法一:
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
int rest = n;//记录还有多少盆花没放进去
for(int i = 0; i < flowerbed.length; i++){
if(flowerbed[i] == 0){
//学会用这种处理边界条件的方式
int left = i > 0 ? i - 1 : 0;
int right = i < flowerbed.length - 1 ? i + 1 : i;
//既然是判断相邻,则左右都要判断
if(flowerbed[left] == 0 && flowerbed[right] == 0){
rest--;
flowerbed[i] = 1;//放进去了花盆,就要修改原数组
}
}
if(rest <= 0){//当n等于0时,rest会被减一次,所以<=0就要退出
break;//满足条件就行,不用再继续下去了
}
}
return rest <= 0;//当n等于0时,rest会被减一次,所以<=0也算
}
}
377

被折叠的 条评论
为什么被折叠?



