categories: leetcode
comments: false
tags: null
title: 605. Can Place Flowers
class Solution {
public:
bool canPlaceFlowers(vector<int>& flowerbed, int n) {
if(n==0) return true;
int size = flowerbed.size();
if(size==1){
if(flowerbed[0]==1) return n<=0;
else return n<=1;
}
for(int i=0;i<size;++i){
// 000, 001, 010, 100, 101, 00], 01], 10]
// [00x
if(i==0 && flowerbed[i]==0 && flowerbed[i+1]==0){
n--;
flowerbed[i]=1;
}
// 00]
if(i==size-1 && flowerbed[i] ==0 && flowerbed[i-1] == 0){
flowerbed[i]=1;
n--;
}
else if(i>0 && i<size-1 && flowerbed[i] == 0){
// x0x
if(flowerbed[i-1]==0 && flowerbed[i+1] ==0){ // 000
flowerbed[i] =1;
n--;
}
}
}
return n<=0;
}
};
- time complexity
O(n)
- space complexity
O(n)
-> O(1)