• LeetCode 42. Trapping Rain Water


    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.

    image

    The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped. Thanks Marcos for contributing this image!

    很经典的题目。从后往前记录一下, 当前位置上,后面数字的最大值。
    然后在从前往后过一遍,用一个数字记录当前位置上前面数字的最大值。然后两者取小就可以了。

    class Solution
    {
    public:
        int trap(vector<int>& height)
        {
            vector<int>vec(height.size());
            int mx = 0;
            for(int i=height.size() - 1; i >= 0; -- i)
            {
                if(height[i] > mx)
                    mx = height[i];
                vec[i] = mx;
            }
            int ans = 0;
            mx = 0;
            for(int i=0; i<height.size(); ++ i)
            {
                if(height[i] > mx)
                    mx = height[i];
                if(min(mx, vec[i]) > height[i])
                    ans += min(mx, vec[i]) - height[i];
            }
            return ans;
        }
    };
    
  • 相关阅读:
    jQuery Ajax 实例 全解析
    用Javascript评估用户输入密码的强度
    常用网址
    常用的107条Javascript
    根据键盘操作表格
    HTML5吧
    css3动画简介以及动画库animate.css的使用
    jquery插件下载地址
    CEO、COO、CFO、CTO
    springboot与shiro配置
  • 原文地址:https://www.cnblogs.com/aiterator/p/6628968.html
Copyright © 2020-2023  润新知