#include #include using std::vector; class Solution { public: bool canPlaceFlowers(vector& flowerbed, int n) { int count = 0; int left = 0, right; for (vector::size_type i = 0; i < flowerbed.size(); i++) { right = (i + 1 < flowerbed.size()) ? flowerbed[i + 1] : 0; if (left == 0 && flowerbed[i] == 0 && right == 0) { count++; left = 1; } else { left = flowerbed[i]; } } return count >= n; } }; int main() { Solution s; std::vector flowers { 1, 0, 0, 0, 1 }; assert(s.canPlaceFlowers(flowers, 1)); assert(!s.canPlaceFlowers(flowers, 2)); flowers = { 1, 0, 0, 0, 0, 1 }; assert(!s.canPlaceFlowers(flowers, 2)); flowers = { 1, 0, 0, 0, 1, 0, 0 }; assert(s.canPlaceFlowers(flowers, 2)); flowers = { 0, 0, 1, 0, 0 }; assert(s.canPlaceFlowers(flowers, 1)); return 0; }