简单做法就是两个指针。但是并没有用到stack。两个指针左右移进。每一个指针移动后和前一个位置的数值进行比较。
public int trap(int[] height) {
int left = 0;
int right = height.length - 1;
if (left >= right) {
return 0;
}
int result = 0;
int lh = height[left];
int rh = height[right];
while (left < right) {
if (lh < rh) {
left++;
//本来就在左边小于右边的环境下,但是这个值比左边的值还要小,于是就要写进结果。
if (height[left] < lh) {
result += (lh - height[left]);
} else {
lh = height[left];
}
} else {
right--;
if (height[right] < rh) {
result += (rh - height[right]);
} else {
rh = height[right];
}
}
}
return result;
}