Trapping Rain Water

来源:互联网 发布:电信机顶盒破解软件 编辑:程序博客网 时间:2024/06/13 19:50

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.



用两个指针维护左面最大和右面最大,每移动一次存水量加上当前最大减去当前高度知道两边相遇。。。。


class Solution {public:    int trap(int A[], int n) {        int leftMax=0;        int rightMax=0;        int myMax=0;        int a=0;        int b=n-1;        while(a<b){            leftMax=max(leftMax,A[a]);            rightMax=max(rightMax,A[b]);            if(leftMax<rightMax){                myMax+=(leftMax-A[a]);                a++;            } else{                myMax+=(rightMax-A[b]);                b--;            }         }        return myMax;    }};


0 0
原创粉丝点击