题目
解题思路
思路比较简单,找到一个连续3个都是空位的位置即可。
需要注意的点:
数组最首端有连续2个位置或最尾端有连续2个位置即可,不需要3个位置
注意花坛实际可容纳花的位置可能大于花的数量
具体代码
class Solution {
public:
bool canPlaceFlowers(vector<int>& flowerbed, int n) {
if (flowerbed.size() == 1 && n <= 1) {
if (!flowerbed[0])
return true;
}
if (!flowerbed[0] && !flowerbed[1]) {
flowerbed[0] = 1;
n--;
}
for (int i = 1; i < flowerbed.size() - 1 && n > 0; i++) {
if (!flowerbed[i] && !flowerbed[i-1] && !flowerbed[i+1]) {
flowerbed[i] = 1;
n--;
}
}
if (n > 0 && flowerbed.size() > 1 && !flowerbed[flowerbed.size() - 1] && !flowerbed[flowerbed.size() - 2]) {
n--;
}
return n <= 0;
}
};