605. Can Place Flowers
题目简介
/**
* @param {number[]} flowerbed
* @param {number} n
* @return {boolean}
*/
题目给我们一个数字数组 flowerbed 与数字 n
要求我们把 n 束花插到 flowerbed 中
flowerbed 的元素由 1 或 0 组成:1 代表该位置有花了;0 代表该位置是空的
题目约束相邻的位置不能够插两束花
我们需要返回 flowerbed 是否有足够空间插入 n 束花
解题思路
能够插入花束的 flowerbed 有三个条件:
- 当前位置
flowerbed[i]为 0 - 前一个位置
flowerbed[i-1]为数组边界或者为 0 - 后一个位置
flowerbed[i+!]为数组边界或者为 0
当有位置同时满足以上三个条件,才能插新的花束
此外,如果有个位置满足了条件,我们可以暂时将其置为 1,表示该位置已经被占据了
遍历 flowerbed 找出所有可能的位置跟 n 比较,如果大于等于 n,则返回 true;否则返回 false
Javascript
/**
* @param {number[]} flowerbed
* @param {number} n
* @return {boolean}
*/
var canPlaceFlowers = function (flowerbed, n) {
let avalibleFlowerbed = 0
const len = flowerbed.length
for (let i = 0; i < len ; i++) {
if (flowerbed[i] === 0 && (i=== 0 || flowerbed[i - 1] === 0) && (i === len-1 ||flowerbed[i + 1] === 0)) {
avalibleFlowerbed++
flowerbed[i] = 1
}
}
return avalibleFlowerbed >= n
};