605. Can Place Flowers

Leetcode link

题目简介

/**
 * @param {number[]} flowerbed
 * @param {number} n
 * @return {boolean}
 */

题目给我们一个数字数组 flowerbed 与数字 n

要求我们把 n 束花插到 flowerbed 中

flowerbed 的元素由 1 或 0 组成:1 代表该位置有花了;0 代表该位置是空的

题目约束相邻的位置不能够插两束花

我们需要返回 flowerbed 是否有足够空间插入 n 束花

解题思路

能够插入花束的 flowerbed 有三个条件:

  1. 当前位置 flowerbed[i] 为 0
  2. 前一个位置 flowerbed[i-1] 为数组边界或者为 0
  3. 后一个位置 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
};

results matching ""

    No results matching ""