问题描述:
Suppose 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 - they would compete for water and both would die.
Given a flowerbed (represented as an array containing 0 and 1, where 0 means empty and 1 means not empty), and a number n, return if n new flowers can be planted in it 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
Note:
The input array won’t violate no-adjacent-flowers rule.
The input array size is in the range of [1, 20000].
n is a non-negative integer which won’t exceed the input array size.
代码:
/**
* @param {number[]} flowerbed
* @param {number} n
* @return {boolean}
*/
var canPlaceFlowers = function(flowerbed, n) {
var start = 0;
var len = flowerbed.length;
var num = 0;
if(len == 1){
return n<=(1-flowerbed[0]);
}
if(flowerbed[0] == 0 && flowerbed[1] == 0){
num += 1;
start += 1;
}
while(start < len){
if(flowerbed[start]==0 && start + 1 == len-1 && flowerbed[++start] == 0){
num+=1;
}else if(flowerbed[start]==0 && flowerbed[start+1]==0 && flowerbed[start+2]==0){
num++;
start+=2;
}else{
start++;
}
}
return num>=n;
};