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;
        }
    }

     

     

     

    人生没有彩排,每一天都是现场直播
  • 相关阅读:
    vue中的样式
    v-model 双向数据绑定
    v-on 事件修饰符
    Linq Join
    Elasticsearch.Net 异常:[match] query doesn't support multiple fields, found [field] and [query]
    MongoDB开启权限认证
    elasticsearch备份与恢复
    elasticserach + kibana环境搭建
    Kibana TypeError : Object #<GlobalState> has no method 'setDefaults'
    匿名函数
  • 原文地址:https://www.cnblogs.com/timfruit/p/12778890.html
Copyright © 2011-2022 走看看