码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode42. 接雨水

时间:2019-06-30 17:21:30      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:else   mat   ++i   height   cpp   tps   +=   public   size   

42. 接雨水

做法

考虑单独一列能生产多少贡献:用左右最大值去接这列的水

\(O(n)\)

Code

class Solution {
    
public:
        int mx[1000000],rx[1000000];
    int trap(vector<int>& height) {
        int n(height.size());
        // int mx(0);
        for(int i=0;i<n;++i){
            if(i==0) mx[i]=height[i];
            else mx[i]=max(mx[i-1],height[i]);
        }
        int ans(0);
        for(int i=n-1;i>=0;--i){
            if(i==n-1) rx[i]=height[i];
            else rx[i]=max(rx[i+1],height[i]);
            ans+=min(rx[i],mx[i])-height[i];
        }
        /*int ans(0);
        for(int i=0;i<n;++i){
            ans+=min(rx[i],mx[i])-height[i];
        }*/
        return ans;
    }
};

Leetcode42. 接雨水

标签:else   mat   ++i   height   cpp   tps   +=   public   size   

原文地址:https://www.cnblogs.com/y2823774827y/p/11110319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!