zoukankan      html  css  js  c++  java
  • leetcode Trapping Rain Water

    Trapping Rain Water

      Total Accepted: 2335  Total Submissions: 8464 My Submissions

     

    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!

     

    Discuss


    Find the highest, then from the start to the highest, then the last to the highest..

    class Solution {
     public:
      int trap(int A[], int n) {
        if (n <= 2)
          return 0;
        int i, maxElevation = A[0], maxIndex = 0, h = 0, res = 0;
        for (i = 1; i < n; ++i)
          if (A[i] > maxElevation) {
            maxElevation = A[i];
            maxIndex = i;
          }
        for (i = 0; i <= maxIndex - 1; ++i) 
          if (A[i] >= h)
            h = A[i];
          else
            res += (h - A[i]);
        
        h = 0;
        for (i = n - 1; i >= maxIndex + 1; --i) 
          if (A[i] >= h)
            h = A[i];
          else
            res += (h - A[i]);
        return res;
      }
    };


  • 相关阅读:
    整型数字转utf8
    cmake构建时指定编译器架构(x86 or x64)
    tcp echo server libuv
    VS2015编译boost1.62
    android rom开发
    游戏昵称
    乐观锁和悲观锁
    数据库锁机制
    MySQL事务实现原理
    MySQL事务
  • 原文地址:https://www.cnblogs.com/riasky/p/3455550.html
Copyright © 2011-2022 走看看