美文网首页
012-蓄水

012-蓄水

作者: Woodlouse | 来源:发表于2020-05-17 21:14 被阅读0次

描述

给定一个非负数组表示一个高度图,其中每一项的宽度都是1,计算这个高度图能装多少水。

例如:输入[0,1,0,2,1,0,1,3,2,1,2,1],返回为6。

示意图:

示意图

分析

对于每个柱子,找到其左右两边最高的柱子,该柱子能容纳的面积就是min(max_left, max_right)-height,所以:

1,从左往右遍历一次,找出每个柱子左边的最大值;

2,从右往左遍历一次,找出每个柱子右边的最大值;

3,再遍历一次,把每个柱子的面积累加;

代码如下:

int trapWater00(int A[], int n)
{
    int *max_left = new int[n]();
    int *max_right = new int[n]();
    
    for (int i=1; i<n; ++i) {
        max_left[i] = max(max_left[i-1], A[i-1]);
        max_right[n-1-i] = max(max_right[n-i], A[n-i]);
    }
    
    int sum = 0;
    
    for (int i=0; i<n; ++i) {
        int height = min(max_left[i], max_right[i]);
        if (height > A[i]) {
            sum += (height-A[i]);
        }
    }
    
    delete[] max_left;
    delete[] max_right;
    
    return sum;
}

相关文章

  • 012-蓄水

    描述 给定一个非负数组表示一个高度图,其中每一项的宽度都是1,计算这个高度图能装多少水。 例如:输入[0,1,0,...

  • 蓄水

    今天看到一句话,家庭不只是你可以宣泄情绪的地方,它也需要蓄水,才可以承载情绪的宣泄。 其实任何一段关系都需要经营,...

  • 我的新加坡教育访学之旅(三十九)——麦里芝蓄水池参观考察记

    今天,新加坡国立教育学院安排我们到麦里芝蓄水池参观考察。麦里芝蓄水池是新加坡最古老的一个蓄水池。这个蓄水池的...

  • 小池蓄水

    问题烦恼都因为自己能力不够,要强大自己

  • 如果你朋友从来不用信用卡,那就把这个给他看

    我曾经接触过一个著名的概念,管道收入。 大概意思是我们的收入就像蓄水池,我们有两个方法给这个蓄水池蓄水。 第一...

  • “我从来不用信用卡”,“难怪你穷!”

    我曾经接触过一个著名的概念,管道收入。 大概的意思是,我们的收入就像蓄水池,我们有两个方法给这个蓄水池蓄水。 第一...

  • 生活总是让人猝不及防

    我蓄水的时候 就不停水 我不蓄水的时候 就停水 生活总是这样 让人猝不及防

  • 活在南坡下之十四

    (15)蓄水塔 那一天,我躺在白草疙瘩的蓄水塔上,做了一个梦。 蓄水塔是南坡煤矿送给大地的礼物,我扒着预制进塔身的...

  • 蓄水池抽样算法(Reservoir Sampling)

    蓄水池抽样算法(Reservoir Sampling) 许多年以后,当听说蓄水池抽样算法时,邱simple将会想起...

  • 012-日志

    springboot默认日志Logback。 默认情况下,Spring Boot会用Logback来记录日志,并用...

网友评论

      本文标题:012-蓄水

      本文链接:https://www.haomeiwen.com/subject/plkcohtx.html