Leetcode problem 14 - 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 true if n new flowers can be planted in the flowerbed without violating the no-adjacent-flowers rule and false otherwise.
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
/**
* @param {number[]} flowerbed
* @param {number} n
* @return {boolean}
*/
var canPlaceFlowers = function (flowerbed, n) {
let count = 0;
const len = flowerbed.length;
for (let i = 0; i < len; i++) {
if (flowerbed[i] === 0) {
const prevEmpty = i === 0 || flowerbed[i - 1] === 0;
const nextEmpty = i === len - 1 || flowerbed[i + 1] === 0;
if (prevEmpty && nextEmpty) {
flowerbed[i] = 1;
count++;
}
}
}
return count >= n;
};
The function initializes a count
variable to keep track of the number of new flowers planted. It also stores the length of the flowerbed
array in the len
variable.
The function then iterates through the flowerbed
array using a for
loop. For each plot with a value of 0, it checks if the current plot and its adjacent plots are also empty (0). If so, it plants a new flower in the current plot, increments the count
, and moves to the next plot.
After traversing the entire flowerbed
, the function returns true
if the count of planted flowers is greater than or equal to n
, indicating that enough flowers can be planted without violating the no-adjacent-flowers rule. Otherwise, it returns false
.
Leave a comment