Katkat

Can You Place N Objects?

LinkedInSoftware Engineer · Technical Screen

Last updated

This problem tests your ability to handle greedy array traversal while maintaining specific adjacency constraints, requiring careful management of boundary indices.

Problem Statement

You are given a flowerbed represented by an integer array flowerbed containing 0s and 1s, where 0 means empty and 1 means occupied. You are also given an integer n.

Your task is to determine if it is possible to plant n new flowers in the flowerbed without violating the rule that no two flowers can be planted in adjacent plots. A flower can only be planted in an empty plot if its left and right neighbors are also empty (or it is at the edge of the array and the only neighbor is empty).

Write a function can_place_flowers(flowerbed, n) that returns True if n flowers can be placed, and False otherwise.

Constraints

  • 1 <= flowerbed.length <= 2 * 10^4
  • flowerbed[i] is 0 or 1.
  • 0 <= n <= flowerbed.length

Examples

Example 1: Input: flowerbed = [1, 0, 0, 0, 1], n = 1 Output: True Explanation: The middle plot is empty and its neighbors are 0, so a flower can be placed there.

Example 2: Input: flowerbed = [1, 0, 0, 0, 1], n = 2 Output: False Explanation: Placing a flower at index 2 would make it adjacent to index 1 or 3 if they were filled, but even with index 2 empty, there is no room to place two additional flowers without violating the rule.

Edge Cases

  • Arrays of length 1.
  • n = 0 (always returns True).
  • A bed already full or nearly full.

Hints

Hint 1

Consider iterating through the array and checking if a position `i` and its immediate neighbors `i-1` and `i+1` are all currently 0.

Hint 2

Be careful with boundary conditions; for the first and last elements, you only need to check one neighbor.

Hint 3

Once you place a flower, you can either update the array to reflect the change or simply skip the next index to ensure the adjacency rule is maintained.

Follow-up questions

  • What is the time and space complexity of your solution, and can you optimize it further?
  • If you could not modify the original input array, how would your logic change?
  • How would the logic change if the flowerbed were circular, meaning the first and last plots are considered adjacent?