Skip to content

Commit 72422d7

Browse files
committed
water problem
1 parent 7ed7584 commit 72422d7

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

src/main.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
mod car_fleet;
2-
use car_fleet::Solution;
3-
1+
mod trapping_rain_water;
2+
use trapping_rain_water::Solution;
43
fn main() {
5-
let position = vec![10, 8, 0, 5, 3];
6-
let speed = vec![2, 4, 1, 1, 3];
7-
let result = Solution::car_fleet(12, position, speed);
4+
let heights = vec![0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1];
5+
let result = Solution::rain_water(heights);
86
print!("{:?}", result);
97
}

src/trapping_rain_water.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
pub struct Solution {}
2+
impl Solution {
3+
pub fn rain_water(height: Vec<i32>) -> i32 {
4+
let mut rp: usize = height.len() - 1;
5+
let mut lp: usize = 0;
6+
let mut max_left: i32 = height[lp];
7+
let mut max_right: i32 = height[rp];
8+
let mut water: i32 = 0;
9+
while rp > lp {
10+
if height[rp] > height[lp] {
11+
let vol = max_left - height[lp];
12+
if vol > 0 {
13+
water += vol;
14+
}
15+
lp += 1;
16+
if height[lp] > max_left {
17+
max_left = height[lp];
18+
}
19+
} else {
20+
let vol = max_right - height[rp];
21+
if vol > 0 {
22+
water += vol;
23+
}
24+
rp -= 1;
25+
if height[rp] > max_right {
26+
max_right = height[rp];
27+
}
28+
}
29+
}
30+
31+
water
32+
}
33+
}

0 commit comments

Comments
 (0)