Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /