Trapping Rain Water

Last updated

Last updated
public class Solution {
/*
* @param heights: a list of integers
* @return: a integer
*/
public int trapRainWater(int[] heights) {
// write your code here
int n = heights.length, ret = 0;
int left = 0,right = n-1;
if(left >= right)
return ret;
int leftHeight = heights[left];
int rightHeight = heights[right];
while(left < right){
if(leftHeight < rightHeight){
//左边
left ++;
if(leftHeight > heights[left]){
ret += leftHeight - heights[left];
}else{
leftHeight = heights[left];
}
}else{
right --;
if(rightHeight > heights[right]){
ret += rightHeight - heights[right];
}else{
rightHeight = heights[right];
}
}
}
return ret;
}
}