zoukankan      html  css  js  c++  java
  • 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.


    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(int A[], int n) 
        {
            int count=0;
            if(n<=2return count;
            
            int h[n];h[0]=A[0];
            for(int i=1;i<n;i++)
                if(A[i]>h[i-1]) h[i]=A[i];
                else h[i]=h[i-1];
            h[n-1]=A[n-1];
            for(int i=n-2;i>=0;i--)
            {
                if(h[i]<=h[i+1]) break;
                
                if(A[i]>h[i+1]) h[i]=A[i];
                else h[i]=h[i+1];
            }
            
            for(int i=0;i<n;i++)
                count=count+h[i]-A[i];
            
            return count;
        }
    }; 
  • 相关阅读:
    redis方法中文解释
    简单redis队列实现
    PHP中常用的字符串操作【转】
    SQL循环语句
    crontable 实例
    自动以当前时间命名文件
    tar命令详解
    PHP 数据类型验证和获取
    Nginx 配置文件nginx.conf的完整配置说明
    sql server DateFormat(转)
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759355.html
Copyright © 2011-2022 走看看