解题思路:贪心算法。
遍历数组,找出当前位置可以种花的条件:
- 当前位置为0
- 左边为0,或者当前位置为左边界
- 右边为0,或者当前位置为右边界
满足条件则种一朵花,如果n朵花都种完,则返回true,否则遍历完成,返回false。
代码:
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
int len = flowerbed.length;
for(int i=0; i<len; i++){
if(flowerbed[i] == 0 && (i == 0 || flowerbed[i-1] == 0) && (i == len-1 || flowerbed[i+1] == 0)){
n--;
flowerbed[i] = 1; // 种花
}
if(n <= 0){ // n朵花种完了
return true;
}
}
return false;
}
}