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

    public class Solution {
        public int trap(int[] height) {
            if(height == null || height.length == 0 || height.length == 1) return 0;
            //对于每个 i 能盛水的量取决于左右两端高度的最小值  vol[i]=min(left[i],right[i]) - height[i]
            // 遍历两次得到最高右板和最高左板 left[],right[] 在遍历一次计算。
            int left[] =new int[height.length];
            int right[] = new int[height.length];
            
            //得到每个index的右最高板
            left[0] = height[0];
            int maxl = left[0];
            for(int i = 1; i < height.length; i++){
                left[i] = Math.max(maxl, height[i]);
                maxl = Math.max(maxl, height[i]);
            }
            
            //得到每个index的左最高板
            right[height.length-1] = height[height.length-1];
            int maxr = height[height.length-1];
            for(int i = height.length-2 ; i>=0; i--){
                right[i] = Math.max(maxr, height[i]);
                maxr = Math.max(maxr, height[i]);
            }
            
            int vol = 0;
            for(int i = 1 ; i < height.length-1 ; i++){
                int bit = Math.min(left[i], right[i]) - height[i];
                if(bit > 0) vol += bit;
            }
            return vol;
        }
    }
  • 相关阅读:
    Java 发送http post 请求
    经纬度计算
    js cookie操作
    wdatepicker默认时间为当前时间
    基于ssm的poi反射bean实例
    jbox小型交互表单(ajax)
    点击图片查看大图(纯js)
    查询物理表字段(mysql)
    离线安装 Cloudera ( CDH 5.x )(转载)
    sed命令详解 (转载)
  • 原文地址:https://www.cnblogs.com/joannacode/p/6127906.html
Copyright © 2011-2022 走看看