题目描述:力扣
解题思路:参考链接
用了双指针的方法,其实就是按列求方法的改良,最重要的点就是求左右的最大值,再将求得过程一步步来优化。
class Solution {
public int trap(int[] height) {
int res = 0;
int max_left = 0;
int[] max_right = new int[height.length];
for(int i = height.length-2; i > 0; i--){
max_right[i]=Math.max(height[i+1], max_right[i+1]);
}
for(int i = 1; i < height.length-1; i++){
max_left = Math.max(max_left, height[i-1]);
int smaller = Math.min(max_left, max_right[i]);
if(height[i]<smaller){
res = res+smaller-height[i];
}
}
return res;
}
}