Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- #define all(v) v.begin(), v.end()
- bool canPlaceFlowers(vector<int>& flowerbed, int n) {
- vector<int> cpy(all(flowerbed));
- int size = flowerbed.size();
- if(!n) return true;
- if(size == 1){
- if(n == 1) return flowerbed[0] == 0;
- else return false;
- }
- int valid = false;
- int cnt = 0;
- for(int i = 0; i < size; i++){
- if(!i){
- if(!flowerbed[i + 1] and !flowerbed[i]){
- cnt++, flowerbed[i] = 1;
- }
- continue;
- }else if(i == size - 1){
- if(!flowerbed[i - 1] and !flowerbed[i]){
- cnt++, flowerbed[i] = 1;
- }
- continue;
- }
- if(!flowerbed[i] and !flowerbed[i + 1] and !flowerbed[i - 1]){
- cnt++, flowerbed[i] = 1;
- }
- }
- valid |= (cnt >= n), cnt = 0, flowerbed = cpy;
- for(int i = 0; i < size; i++){
- if(!i){
- if(!flowerbed[size - i - 2] and !flowerbed[size - i - 1]){
- cnt++, flowerbed[size - i - 1] = 1;
- }
- continue;
- }else if(i == size - 1){
- if(!flowerbed[size - i] and !flowerbed[size - i - 1]){
- cnt++, flowerbed[size - i - 1] = 1;
- }
- continue;
- }
- if(!flowerbed[size - i - 1] and !flowerbed[size - i - 2] and !flowerbed[size - i]){
- cnt++, flowerbed[size - i - 1] = 1;
- }
- }
- return valid or (cnt >= n);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement