File tree 1 file changed +59
-0
lines changed
1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ // Space Complexity: O(1)
3
+ pub fn can_place_flowers_1 ( flowerbed : Vec < i32 > , n : i32 ) -> bool {
4
+ let mut empty = if flowerbed[ 0 ] != 0 { 0 } else { 1 } ;
5
+ let mut n = n;
6
+
7
+ for f in flowerbed {
8
+ if f != 0 {
9
+ n -= ( empty - 1 ) / 2 ;
10
+ empty = 0 ;
11
+ } else {
12
+ empty += 1 ;
13
+ }
14
+ }
15
+
16
+ n -= empty / 2 ;
17
+
18
+ n <= 0
19
+ }
20
+
21
+ // Space Complexity: O(1)
22
+ pub fn can_place_flowers_2 ( flowerbed : Vec < i32 > , n : i32 ) -> bool {
23
+ let mut flowerbed = flowerbed;
24
+ let mut n = n;
25
+
26
+ for i in 0 ..flowerbed. len ( ) {
27
+ if n == 0 {
28
+ return true ;
29
+ }
30
+ if ( i == 0 || flowerbed[ i - 1 ] == 0 )
31
+ && flowerbed[ i] == 0
32
+ && ( i == flowerbed. len ( ) - 1 || flowerbed[ i + 1 ] == 0 )
33
+ {
34
+ flowerbed[ i] = 1 ;
35
+ n -= 1 ;
36
+ }
37
+ }
38
+
39
+ n == 0
40
+ }
41
+
42
+ // Space Complexity: O(n)
43
+ pub fn other_can_place_flowers_3 ( flowerbed : Vec < i32 > , n : i32 ) -> bool {
44
+ let mut f: Vec < i32 > = vec ! [ vec![ 0 ] , flowerbed, vec![ 0 ] ]
45
+ . into_iter ( )
46
+ . flatten ( )
47
+ . collect ( ) ;
48
+ let mut n = n;
49
+
50
+ for i in 1 ..f. len ( ) - 1 {
51
+ if f[ i - 1 ] == 0 && f[ i] == 0 && f[ i + 1 ] == 0 {
52
+ f[ i] = 1 ;
53
+ n -= 1 ;
54
+ }
55
+ }
56
+
57
+ n <= 0
58
+ }
59
+ }
You can’t perform that action at this time.
0 commit comments