zoukankan      html  css  js  c++  java
  • 算法

    leetcode 42. 接雨水

    一、前言

      今天刷了一道个人觉得好难的leetcode题目(大神可以忽略)

     

    二丶题目

    42. 接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

    上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。

    示例:

    输入: [0,1,0,2,1,0,1,3,2,1,2,1]
    输出: 6

     

    三、个人解法

    class Solution {
        public int trap(int[] height) {
            if(height==null || height.length<=2){
                return 0;
            }
    
            int total=0;
            int left=0;
    
            //左低右高
            for(int i=0;i<height.length;i++){
                if(height[left]<=height[i]){//计算赋值
                    //判断是否符合"凹"型(可以装水)
                    if(left+2<=i && height[left]>height[left+1] && height[i]>height[i-1]){
                        int tmpTotal=0;
                        for(int j=left+1;j<i;j++){
                            tmpTotal+=height[j];
                        }
                        //积水量=补平最高位后的总量  - 台阶占用空间
                        total=total+(height[left]*(i-left-1) - tmpTotal);
                    }
    
                    left=i;
                }
            }
    
    
            //左高右低
            int right=height.length-1;
            for(int i=right;i>=left;i--){
                if(height[right]<=height[i]){//计算赋值
                    if(i+2<=right && height[i]>height[i+1] && height[right]>height[right-1]){
                        int tmpTotal=0;
                        for(int j=i+1;j<right;j++){
                            tmpTotal+=height[j];
                        }
    
                        total=total+(height[right]*(right-i-1) - tmpTotal);
                    }
    
                    right=i;
                }
    
    
            }
    
    
    
            return total;
        }
    }

     

     

     

    人生没有彩排,每一天都是现场直播
  • 相关阅读:
    解析时间parse time
    php一些高级函数方法
    PHP定界符<<<EOF
    linux crontab(定时任务)
    svn提交按钮灰选
    centos官网下载地址
    centos7 yum安装LAMP
    saprfc
    RSA加解密工具类RSAUtils.java,实现公钥加密私钥解密和私钥解密公钥解密
    接入HTTPS协议的CAS登录配置
  • 原文地址:https://www.cnblogs.com/timfruit/p/12778890.html
Copyright © 2011-2022 走看看