• LeetCode


     题目描述:

    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!

    AC代码:

    int right(int* a,int n){
        int ans = 0;
        int has = 0;
        int h = 0;
        for(int i = 0 ; i < n ; i ++){
            if(a[i]>=h){
                ans+=has;
                h=a[i];
                has = 0;
            }else{
                has+=h-a[i];
            }
        }
        return ans;
    }

    int left(int*a,int n){
        int ans = 0;
        int has = 0;
        int h = 0;
        for(int i = n-1 ; i >= 0; i --){
            if(a[i]>h){
                ans+=has;
                h = a[i];
                has = 0;
            }else{
                has += h-a[i];
            }
        }
        return ans;
    }

    int trap(int* height, int heightSize) {
       return right(height,heightSize)+left(height,heightSize);
    Trapping Rain Water

  • 相关阅读:
    优化索引的常用思路
    MySQL架构说明
    Mysql性能分析必备知识
    查询截取分析
    Mysql之explain
    MyISAM和InnDB的区别
    sql执行顺序(面试常见)
    一个ES设置操作引发的“血案”
    Ubuntu 安装搜狗拼音输入法
    ubuntu 安装SecoClient x64
  • 原文地址:https://www.cnblogs.com/clover-xuqi/p/7154799.html
Copyright © 2020-2023  润新知