好久没有做leetcode了,因为最近心情不好。
这道题还是左右指针,一层一层地算。
public class Solution {
public int trap(int[] A) {int sum=0;
int begin=0;
int i,l,r,min;
int n=A.length;
if(n==0)
return 0;
l=0;r=n-1;
min=0;
while(l<r)
{
while(l<r && (A[l]<=A[l+1] || A[l]<=min))
l++;
while(r>l && (A[r]<=A[r-1] || A[r]<=min))
r--;
if(l>=r)
break;
min=A[l];
if(min>A[r])
min=A[r];
for(i=l+1;i<r;i++)
{
if(A[i]<min)
{
sum+=min-A[i];
A[i]=min;
}
}
// System.out.println(l+" "+r+" "+min+" "+" "+sum);
if(min==A[l])
l++;
if(min==A[r])
r--;
}
return sum;
}
}