605.Can Place Flowers
===
###### tags: `Easy`,`Array`,`Greedy`
[605. Can Place Flowers](https://leetcode.com/problems/can-place-flowers/)
### 題目描述
You have a long flowerbed in which some of the plots are planted, and some are not. However, flowers cannot be planted in **adjacent** plots.
Given an integer array `flowerbed` containing `0`'s and `1`'s, where `0` means empty and `1` means not empty, and an integer `n`, return *if* `n` new flowers can be planted in the `flowerbed` without violating the no-adjacent-flowers rule.
### 範例
**Example 1:**
```
Input: flowerbed = [1,0,0,0,1], n = 1
Output: true
```
**Example 2:**
```
Input: flowerbed = [1,0,0,0,1], n = 2
Output: false
```
**Constraints**:
* 1 <= `flowerbed.length` <= 2 * 10^4^
* `flowerbed[i]` is 0 or 1.
* There are no two adjacent flowers in `flowerbed`.
* 0 <= `n` <= `flowerbed.length`
### 解答
#### Python
```python=
class Solution:
def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
cnt = 0
for i in range(len(flowerbed)):
if flowerbed[i] == 0:
empty_left_plot = (i == 0) or (flowerbed[i - 1] == 0)
empty_right_plot = (i == len(flowerbed) - 1) or (flowerbed[i + 1] == 0)
if empty_left_plot and empty_right_plot:
flowerbed[i] = 1
cnt += 1
if cnt >= n:
return True
return cnt >= n
```
> [name=Ron Chen][time=Mon, Mar 20, 2023]
#### Javascript
```javascript=
function canPlaceFlowers(flowerbed, n) {
let count = 0;
for (let i = 0; i < flowerbed.length; i++) {
if (!flowerbed[i - 1] && !flowerbed[i] && !flowerbed[i + 1]) {
count++;
flowerbed[i] = 1;
}
}
if (count >= n) return true;
return false;
}
```
> [name=Marsgoat][time=Mon, Mar 20, 2023]
### Reference
[回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)