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!

    找到最长的那块木板,假设其下标为maxIdx。

    分别从左侧和右侧向其逼近。

    在左侧逼近过程中:

    如果一个木板的长度小于已经遍历的最大长度max,即max>该木板<maxIdx,所以在该木板位置能存max - 该木板长度的水量(左右两侧各有一个木板长于它)。

    如果一个木板的长度大于已经遍历的最大长度max,即max<该木板<maxIdx,所以在该木板位置不能存水(因为左右两侧只有一个木板(maxIdx)长于它)。更新max值。

    右侧逼近过程与左侧相似。

     1 public class Solution {
     2     public int trap(int[] A) {
     3         if (A.length<3) {
     4             return 0;
     5         }
     6         int len=A.length;
     7         int maxIndex=0;
     8         //找出最大值的下标
     9         for (int i = 0; i < len; i++) {
    10             if (A[i]>A[maxIndex]) {
    11                 maxIndex=i;
    12             }
    13         }
    14         
    15         int leftMax=0;
    16         int rightMax=0;
    17         int water=0;
    18         for (int i = 0; i < maxIndex; i++) {
    19             if (leftMax>A[i]) {
    20                 water=water+leftMax-A[i];
    21             }else {
    22                 leftMax=A[i];
    23             }
    24         }
    25             
    26         for (int i = len-1; i > maxIndex; i--) {
    27             if (rightMax>A[i]) {
    28                 water=water+rightMax-A[i];
    29             }else {
    30                 rightMax=A[i];
    31             }
    32         }
    33         return water;
    34     }
    35 }
  • 相关阅读:
    数据库DQL(Data Query Language)语言学习之一:基础查询
    Mysql查看连接数(连接总数、活跃数、最大并发数)
    完成端口之二:服务器代码
    完成端口之二:线程池部分
    完成端口之一
    日志系统(Log4z源码)
    C++多线程同步之Semaphore(信号量)
    select、poll和epoll的优缺点
    python之切片
    python之Dict和set类型
  • 原文地址:https://www.cnblogs.com/birdhack/p/4061002.html
Copyright © 2011-2022 走看看