解题思路:
利用双指针,左右指针同时移动,代表左右最高的柱子。
每次能装的水要与最低的水位l_max或r_max比较即可。
class Solution {
public int trap(int[] height) {
int left = 0, right = height.length - 1;
int l_max = 0, r_max = 0;
int res = 0;
while(left < right){
l_max = Math.max(l_max, height[left]); //最高的柱子
r_max = Math.max(r_max, height[right]);
if(l_max < r_max){ //最低的水位l_max或r_max
res += l_max - height[left];
left++;
}else{
res += r_max - height[right];
right--;
}
}
return res;
}
}