s4553711
9/6/2017 - 3:03 PM

605.cpp

class Solution {
public:
    bool canPlaceFlowers(vector<int>& flowerbed, int n) {
        int count = 0;
        if (flowerbed.size() == 1) {
            if (flowerbed[0] == 0) {
                return true;
            } else if (flowerbed[0] == 1 && n == 0) {
                return true;
            } else {
                return false;
            }
        }
        for(int i = 0; i < flowerbed.size();) {
            if (flowerbed[i] == 0) {
                if (i == 0 ) {
                    if (i+1 < flowerbed.size() && flowerbed[i+1] == 0) {
                        i+=2;
                        count++;
                    } else {
                        i++;
                    }
                } else if ( i == flowerbed.size() - 1) {
                     if (flowerbed[i-1] == 0) {
                        i+=2;
                        count++;
                    } else {
                        i++;
                    }                   
                } else {
                    if ((i-1 > 0&& flowerbed[i-1] == 0 ) && (i+1 < flowerbed.size() && flowerbed[i+1] == 0)) {
                        count++;
                        i+=2;
                    } else {
                        i++;
                    }
                }
            } else {
                i++;
            }
        }
        cout << count << endl;
        return n <= count ? true : false;
    }
};