假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。
思路:遇到1时向后走两步,确保不会相邻,遇到0是,检查后一位是否为1,若不是,则count加1,再向后走两步,若是,则向后走一步,最后比较count与n的大小
示例 1:
输入:flowerbed = [1,0,0,0,1], n = 1
输出:true
示例 2:
输入:flowerbed = [1,0,0,0,1], n = 2
输出:false
bool canPlaceFlowers(int* flowerbed, int flowerbedSize, int n){
int count = 0;
for(int i = 0; i < flowerbedSize; i++)
{
if(flowerbed[i]==0)
{
if(i+1 >= flowerbedSize || flowerbed[i+1] != 1)
{
count++;
i++;
}
}
else
{
i++;
}
}
return count >= n;
}