代码和解析:
bool canPlaceFlowers(int* flowerbed, int flowerbedSize, int n){
//首先排除特殊情况
if (flowerbedSize == 0) return false;
if (n == 0) return true;
//引入cnt用来计数
int cnt = 0;
/*对数组中的每一个数以及左右两数进行判断,若均为0(i在两端的情况已经排除),则可以种植,计数加一,
并且i移动一个位置,本来是右移两个位置,但for循环中已经移动了一个位置)*/
for (int i=0; i<flowerbedSize; i++){
if ((flowerbed[i] == 0) && ((i == 0) || flowerbed[i-1] == 0) && ((i == flowerbedSize-1) || flowerbed[i+1] == 0)){
cnt++;
i++;
}
}
//最后判断是否能种植n个返回真或假
if (cnt >= n) return true;
else return false;
}