zoukankan      html  css  js  c++  java
  • LeetCode_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) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
             if(n <= 2) return 0;
            
            vector<int> left(n,0);
            vector<int> right(n, 0);
            
            left[0] = A[0];
            for(int i =1; i < n;++i)
            {
              left[i] = left[i-1] > A[i] ?  left[i-1] : A[i]; 
            }
            
            right[n-1] = A[n-1];
            for(int i = n-2; i>=0 ;--i){
                right[i] = right[i+1] > A[i] ? right[i+1] : A[i];
            }
            
            int res = 0;
            for(int i = 0; i< n; i++){
            
                int min = left[i] < right[i]? left[i] : right[i];
                res += min - A[i];
            }
            
            return res;
        }
    };
  • 相关阅读:
    Linux-vim
    [转载]关于eve模拟器上的VPS配置问题
    [转载]cisco 出现%Error opening tftp://255.255.255.255/cisconet.cfg解决方法
    CCNA-NAT
    CCNA-DHCP
    CCNA-ACL
    CCNA-OSPF 配置
    CCNA-OSPF 基础
    枚举的应用
    带索引的遍历
  • 原文地址:https://www.cnblogs.com/graph/p/3294574.html
Copyright © 2011-2022 走看看