题目链接:https://leetcode-cn.com/problems/trapping-rain-water/
题目描述
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
第一次编辑代码:
(参考了力扣@L1ttleWave的韦恩图解法)
class Solution {
public int trap(int[] height) {
if(height == null)
return 0;
int sum1=0,sum2=0,sum3=0;
int max1=0,max2=0;
int n = height.length;
for(int i=0;i<n;i++){
sum3 += height[i]; //柱子面积
if(height[i] > max1)
max1 = height[i];
sum1 += max1; //从左往右扫描
if(height[n-1-i] > max2)
max2 = height[n-1-i];
sum2 += max2; //从右往左扫描
}
return sum1+sum2-max1*n-sum3;
}
}
提交结果
99.98%。
如果在另外一题https://leetcode-cn.com/problems/volume-of-histogram-lcci/submissions/ 中提交的话,结果是双百。