09 Sept 2026Go / Python / TypeScriptEasy

Can Place Flowers

Determine whether enough flowers can be planted without placing any two in adjacent plots.

Scan from left to right and plant whenever the current and neighboring plots are empty. Each earliest valid placement leaves maximum room for later flowers.

complexity

O(n) time and O(1) extra space.

solution files

  • Go can-place-flowers/solution.go
  • Python can-place-flowers/solution.py
  • TypeScript can-place-flowers/solution.ts

Solution files

Gocan-place-flowers/solution.go
package main

func canPlaceFlowers(flowerbed []int, n int) bool {
	for index := 0; index < len(flowerbed) && n > 0; index++ {
		leftEmpty := index == 0 || flowerbed[index-1] == 0
		rightEmpty := index == len(flowerbed)-1 || flowerbed[index+1] == 0
		if flowerbed[index] == 0 && leftEmpty && rightEmpty {
			flowerbed[index] = 1
			n--
		}
	}
	return n == 0
}
Pythoncan-place-flowers/solution.py
class Solution:
    def canPlaceFlowers(self, flowerbed: list[int], n: int) -> bool:
        if n == class="syntax-number">0:
            return True

        for index, plot in enumerate(flowerbed):
            left_empty = index == class="syntax-number">0 or flowerbed[index - class="syntax-number">1] == class="syntax-number">0
            right_empty = index == len(flowerbed) - class="syntax-number">1 or flowerbed[index + class="syntax-number">1] == class="syntax-number">0
            if plot == class="syntax-number">0 and left_empty and right_empty:
                flowerbed[index] = class="syntax-number">1
                n -= class="syntax-number">1
            if n == class="syntax-number">0:
                return True
        return False
TypeScriptcan-place-flowers/solution.ts
function canPlaceFlowers(flowerbed: number[], n: number): boolean {
  for (let index = class="syntax-number">0; index < flowerbed.length && n > class="syntax-number">0; index += class="syntax-number">1) {
    const leftEmpty = index === class="syntax-number">0 || flowerbed[index - class="syntax-number">1] === class="syntax-number">0;
    const rightEmpty = index === flowerbed.length - class="syntax-number">1 || flowerbed[index + class="syntax-number">1] === class="syntax-number">0;
    if (flowerbed[index] === class="syntax-number">0 && leftEmpty && rightEmpty) { flowerbed[index] = class="syntax-number">1; n -= class="syntax-number">1; }
  }
  return n === class="syntax-number">0;
}