//给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
//
//
//
// 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Mar
//cos 贡献此图。
//
// 示例:
//
// 输入: [0,1,0,2,1,0,1,3,2,1,2,1]
//输出: 6
// Related Topics 栈 数组 双指针
//Java:接雨水
public class P42TrappingRainWater{
public static void main(String[] args) {
Solution solution = new P42TrappingRainWater().new Solution();
// TO TEST
}
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int trap(int[] height) {
int len = height.length;
if (len <= 1) {
return 0;
}
int[] leftMax = new int[len];
int[] rightMax = new int[len];
int max = height[0];
for (int i = 0; i < len; ++i) {
if (height[i] > max) {
max = height[i];
}
leftMax[i] = max;
}
max = height[len - 1];
for (int i = len - 1; i >= 0; i--) {
if (height[i] > max) {
max = height[i];
}
rightMax[i] = max;
}
int ans = 0;
for (int i = 0; i < len; ++i) {
ans += (Math.min(leftMax[i], rightMax[i]) - height[i]);
}
return ans;
}
}
//leetcode submit region end(Prohibit modification and deletion)
}
LeetCode42【null】:接雨水
猜你喜欢
转载自blog.csdn.net/baidu_34209307/article/details/104911833
今日推荐
周排行