1.题目
2.解法
①一维数组+双指针
public class Solution {
public int trapRainWater(int[] heights) {
int res = 0;
int l = 0;
int r;
int n = heights.length;
for(int i = 0; i < n; i++){
if(heights[i] != 0){
l = i;
break;
}
}
while(l < n){
r = l + 1;
int height;
int index;
if(r < n){
height = heights[r];
index = r;
while(r < n){
if(heights[r] >= heights[l]) break;
if(heights[r] >= height){
height = heights[r];
index = r;
}
r++;
}
}
else{
break;
}
if(r < n){
if(r > l + 1){
for(int k = l + 1; k < r; k++) res += (heights[l] - heights[k]);
}
l = r;
}
else{
if(index > l + 1){
for(int k = l + 1; k < index; k++) res += (heights[index] - heights[k]);
}
l = index;
}
}
return res;
}
}