Skip to content

Commit ac90ee6

Browse files
committed
can place flowers done
1 parent dc0b538 commit ac90ee6

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package com.leetcode.arrays;
2+
3+
import static org.junit.Assert.assertFalse;
4+
import static org.junit.Assert.assertTrue;
5+
6+
/**
7+
* Level: Easy
8+
* Problem Link: https://leetcode.com/problems/can-place-flowers/
9+
* Problem Description:
10+
* Suppose you have a long flowerBed in which some of the plots are planted and some are not. However, flowers cannot
11+
* be planted in adjacent plots - they would compete for water and both would die.
12+
* <p>
13+
* Given a flowerBed (represented as an array containing 0 and 1, where 0 means empty and 1 means not empty), and a
14+
* number n, return if n new flowers can be planted in it without violating the no-adjacent-flowers rule.
15+
* <p>
16+
* Example 1:
17+
* Input: flowerBed = [1,0,0,0,1], n = 1
18+
* Output: True
19+
* <p>
20+
* Example 2:
21+
* Input: flowerBed = [1,0,0,0,1], n = 2
22+
* Output: False
23+
* <p>
24+
* Note:
25+
* The input array won't violate no-adjacent-flowers rule.
26+
* The input array size is in the range of [1, 20000].
27+
* n is a non-negative integer which won't exceed the input array size.
28+
*
29+
* @author rampatra
30+
* @since 2019-07-24
31+
*/
32+
public class CanPlaceFlowers {
33+
34+
/**
35+
* Time Complexity: O(n)
36+
* Space Complexity: O(1)
37+
* Runtime: <a href="https://leetcode.com/submissions/detail/246312039/">1 ms</a>.
38+
*
39+
* @param flowerBed
40+
* @param n
41+
* @return
42+
*/
43+
public static boolean canPlaceFlowers(int[] flowerBed, int n) {
44+
int i = 0, count = 0;
45+
while (i < flowerBed.length) {
46+
if (flowerBed[i] == 0 && (i == 0 || flowerBed[i - 1] == 0) && (i == flowerBed.length - 1 || flowerBed[i + 1] == 0)) {
47+
flowerBed[i++] = 1;
48+
count++;
49+
}
50+
if (count >= n)
51+
return true;
52+
i++;
53+
}
54+
return false;
55+
}
56+
57+
public static void main(String[] args) {
58+
assertTrue(canPlaceFlowers(new int[]{0}, 0));
59+
assertTrue(canPlaceFlowers(new int[]{0}, 1));
60+
assertTrue(canPlaceFlowers(new int[]{1}, 0));
61+
assertFalse(canPlaceFlowers(new int[]{1}, 1));
62+
assertTrue(canPlaceFlowers(new int[]{1, 0, 0, 0, 1}, 1));
63+
assertFalse(canPlaceFlowers(new int[]{1, 0, 0, 0, 1}, 2));
64+
assertFalse(canPlaceFlowers(new int[]{1, 0, 0, 0, 0, 1}, 2));
65+
assertTrue(canPlaceFlowers(new int[]{1, 0, 0, 0, 1, 0, 0}, 2));
66+
}
67+
}

0 commit comments

Comments
 (0)