# 605. Can Place Flowers

可以反向思考,例如與其找沒種的 0,不如判斷有種過的 1 ,這樣可以更可以簡潔寫出各種狀況

LeetCode

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.

input: arr = [1,0,0, ...]  1 代表有種花 0 代表沒種花, n 代表新花數量
output: 回傳心花是否可以種完

關鍵是不能種相鄰的花 
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) {}

Edge Case

  • [0], [0, 1] 之類邊界值

怎麼解

其實很單純我卻想很久邊界值怎麼處理,其實只要判斷前後跟自己是不是 1 ,都是就跳過,不是就代表可以種花

Code

如何改進

後來看到一個更容易理解就是前後都加 0

Last updated

Was this helpful?