不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

leetcode 42.trapping-rain-water | 接雨水

题目描述

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

题目解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//Go
func trap(height []int) int {
var left, right, leftMax, rightMax, res int
right = len(height) - 1
for left < right {
if height[left] < height[right] {
if height[left] >= leftMax {
//设置左边最高柱子
leftMax = height[left]
} else {
//右边必定有柱子挡水,所以,遇到所有值小于等于leftMax的,全部加入水池
res += leftMax - height[left]
}
left++
} else {
if height[right] > rightMax {
//设置右边最高柱子
rightMax = height[right]
} else {
//左边必定有柱子挡水,所以,遇到所有值小于等于rightMax的,全部加入水池
res += rightMax - height[right]
}
right--
}
}
return res
}
------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!