Skip to content

LeetCode challenge – Can Place Flowers – Java Solution

This is a solution for the LeetCode challenge – Can Place Flowers written in Java ( Source )

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.

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.

public class CanPlaceFlowers {

  public static void main(String[] args) throws Exception {
    int[] n = {1, 0, 0, 0, 1};
    System.out.println(new CanPlaceFlowers().canPlaceFlowers(n, 1));
  }

  public boolean canPlaceFlowers(int[] flowerbed, int n) {

    int[] T = new int[flowerbed.length + 4];
    for (int i = 0, j = 2; i < flowerbed.length; i++) T[j++] = flowerbed[i];
    T[0] = 1;
    T[T.length - 1] = 1;
    int total = 0, count = 0;
    for (int i = 1; i < T.length; i++) {
      if (T[i] == 0) count++;
      else {
        if ((count % 2) == 0) total += ((count / 2) - 1);
        else total += (count / 2);
        count = 0; // reset
      }
    }
    return (total >= n);
  }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.