1,题目要求
Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, flowers cannot be planted in adjacent plots - they would compete for water and both would die.
Given a flowerbed (represented as an array containing 0 and 1, where 0 means empty and 1 means not empty), and a number n, return if n new flowers can be planted in it without violating the no-adjacent-flowers rule.
给出一系列的01数组,判断能够插入足够的1,其中要求被插入的地方前后都为0。
2,题目思路
题目问题在于找到满足条件0的位置。这样的位置0在开头和结尾的位置有一些特殊:开头只需要后面一位为0即可,结尾数字只需要前一位为0即可。因此需要单独拿出来进行处理。
3,程序源码
class Solution {
public:
bool canPlaceFlowers(vector<int>& flowerbed, int n) {
for(auto i = 0;i<flowerbed.size();i++)
{
int prev = (i==0)? 0 : flowerbed[i-1];
int next = (i==flowerbed.size()-1)? 0 : flowerbed[i+1];
if(flowerbed[i]!=1 && prev == 0 && next == 0 && n!= 0)
{
flowerbed[i] = 1;
n--;
}
}
return n==0;
}
};