Advertisement
El_GEMMY

flowerbed

Sep 18th, 2021
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     #define all(v) v.begin(), v.end()
  4.     bool canPlaceFlowers(vector<int>& flowerbed, int n) {
  5.         vector<int> cpy(all(flowerbed));
  6.         int size = flowerbed.size();
  7.        
  8.         if(!n) return true;
  9.        
  10.         if(size == 1){
  11.             if(n == 1) return flowerbed[0] == 0;
  12.             else return false;
  13.         }
  14.        
  15.         int valid = false;
  16.         int cnt = 0;
  17.        
  18.         for(int i = 0; i < size; i++){
  19.             if(!i){
  20.                 if(!flowerbed[i + 1] and !flowerbed[i]){
  21.                     cnt++, flowerbed[i] = 1;
  22.                 }
  23.                 continue;
  24.             }else if(i == size - 1){
  25.                 if(!flowerbed[i - 1] and !flowerbed[i]){
  26.                     cnt++, flowerbed[i] = 1;
  27.                 }
  28.                 continue;
  29.             }
  30.            
  31.             if(!flowerbed[i] and !flowerbed[i + 1] and !flowerbed[i - 1]){
  32.                 cnt++, flowerbed[i] = 1;            
  33.             }
  34.         }
  35.        
  36.         valid |= (cnt >= n), cnt = 0, flowerbed = cpy;
  37.        
  38.         for(int i = 0; i < size; i++){
  39.             if(!i){
  40.                 if(!flowerbed[size - i - 2] and !flowerbed[size - i - 1]){
  41.                     cnt++, flowerbed[size - i - 1] = 1;
  42.                 }
  43.                 continue;
  44.             }else if(i == size - 1){
  45.                 if(!flowerbed[size - i] and !flowerbed[size - i - 1]){
  46.                     cnt++, flowerbed[size - i - 1] = 1;
  47.                 }
  48.                 continue;
  49.             }
  50.            
  51.             if(!flowerbed[size - i - 1] and !flowerbed[size - i - 2] and !flowerbed[size - i]){
  52.                 cnt++, flowerbed[size - i - 1] = 1;
  53.             }
  54.         }
  55.        
  56.         return valid or (cnt >= n);
  57.     }
  58. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement