时间:2021.1.1
题目 605 种花问题
问题分析
1、数组两边为零时
2、数组全部为零时
3、数组中间部分为零
问题解析
要单独的去处理第一种情况和第二种情况
第三种情况只需要统计零的个数,去判断种花的个数
我笨拙的coding
class Solution {
public:
bool canPlaceFlowers(vector<int>& flowerbed, int n) {
int count = 0;
int flag = 1;//去判断数组头部为零的情况
int t = 0;
int size = flowerbed.size();
for(int i=0;i<size;i++)
{
if(flowerbed[i]==0)
count++;
else
{
if(flag)
{
t += count/2;
flag = 0;
}
else
{
t += (count-1)/2;
}
count = 0;
}
}
if(count==size)//判断数组全部为零的情况
t = (count+1)/2;
else
t += count/2;//判断数组尾部的零的情况
if(t>=n)
return true;
return false;
}
};
优秀coding
class Solution {
public:
bool canPlaceFlowers(vector<int>& flowerbed, int n) {
int size = flowerbed.size();
int i = 0;
int sum = 0;
while(i < size)
{
if(flowerbed[i] == 0 && (i==0 || flowerbed[i-1] == 0) && (i == size - 1 || flowerbed[i+1] == 0))
{
sum++;
flowerbed[i] = 1;
}
i++;
}
return sum >= n;
}
};