解法一:贪心

从头往后遍历,如果相邻位置没有种花就在该位置上种花。注意考虑边界情况。

  1. class Solution {
  2. public boolean canPlaceFlowers(int[] flowerbed, int n) {
  3. final int len = flowerbed.length;
  4. for (int i = 0; i < len && n > 0; ++i) {
  5. if (flowerbed[i] == 0) {
  6. if ((i - 1 < 0 || flowerbed[i - 1] == 0) &&
  7. (i + 1 >= len || flowerbed[i + 1] == 0)) {
  8. --n;
  9. flowerbed[i] = 1;
  10. }
  11. }
  12. }
  13. return n == 0;
  14. }
  15. }