leetcode-042:Trapping Rain Water

来源:互联网 发布:指南针软件怎么退款 编辑:程序博客网 时间:2024/05/15 06:44
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的差值。更新最大值
原创粉丝点击