您的位置:首页 > 移动开发

leetcode-042:Trapping Rain Water

2013-09-02 21:47 441 查看
class Solution {
public:
int trap(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int result=0;
if(n==0) return result;

int maxId=0;
for(int i=0;i<n;i++)
{
if(A[i]>A[maxId]) maxId=i;
}

int leftMaxId=0;
for(int i=1;i<maxId;i++)
{
int water=min(A[leftMaxId],A[maxId])-A[i];
if(water>0) result+=water;
if(A[i]>A[leftMaxId]) leftMaxId=i;
}
int rightMaxId=n-1;
for(int i=n-1;i>=maxId;i--)
{
int water=min(A[rightMaxId],A[maxId])-A[i];
if(water>0) result+=water;
if(A[i]>A[rightMaxId]) rightMaxId=i;
}
return result;
}
};


先找最大点;当前的水滴是左边最大和右边最大二者中较小者和height的差值。更新最大值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: