Skip to content

Commit 2ce3091

Browse files
committed
Create: 0605-can-place-flowers.rs
1 parent ee7a3bc commit 2ce3091

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

rust/0605-can-place-flowers.rs

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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+
}

0 commit comments

Comments
 (0)