这道题,可以找到当前点,最大的左值和最大的右值,然后取其中最小的点,相减就是想要的答案。
class Solution {
public:
int trap(int A[], int n) {
int ans = 0;
int leftMax[n];
int rightMax[n];
int max = 0;
for(int i = 0;i<n;i++)
{
if(max<A[i])
max = A[i];
leftMax[i] = max;
}
max = 0;
for(int i = n-1;i>=0;i--)
{
if(A[i]>max)
max = A[i];
rightMax[i] = max;
}
for(int i = 0 ;i<n;i++)
{
ans += min(rightMax[i],leftMax[i])-A[i];
}
return ans;
}
};