Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.
For example,
Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.
[code]
public class Solution {
public int trap(int[] A) {
if(A==null || A.length<3)return 0;
int n=A.length;
int left[]=new int[n], right[]=new int [n];
for(int i=0;i<n;i++)
{
if(i==0)left[i]=0;
else left[i]=Math.max(left[i-1], A[i-1]);
}
for(int i=n-1;i>=0;i--)
{
if(i==n-1)right[i]=0;
else right[i]=Math.max(right[i+1], A[i+1]);
}
int result=0;
for(int i=0;i<n;i++)
{
result+= Math.max(0, Math.min(left[i], right[i])-A[i]);
}
return result;
}
}