2022/5/1 紧跟潮流——接雨水

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

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1][0,1,0,2,1,0,1,3,2,1,2,1]

如图所示:

alt

输出:6

如图所示:

alt

由木桶效应,我们知道下雨之后,能接到的水由min(height[i],height[k])min(height[i],height[k])决定,如图所示: alt

故可以把上述问题转换成讨论往木桶填加不同高度木块,对木桶容量的改变。记木桶两端最小高度为 heightminheight_{min}

1.当加入一块木块xx,其高度满足 heightx<heightminheight_{x}<height_{min},显然对木桶容量产生负作用,如图所示:。alt

2.当加入一块木块xx,其高度满足 heightx>heightminheight_{x}>height_{min},显然增加了木桶容量,如图所示::alt

为了简化问题,遍历新产生的数组都从最低高度出发。

代码实现,如下所示:

#include <vector>
#include <iostream>
using namespace std;

int trap(vector<int>&);

int main(int argc, char* argv[]) {
    int num;
    while (cin >> num) {
        vector<int> height;
        for (int i = 0; i < num; i++) {
            int buf;
            cin >> buf;
            height.push_back(buf);
        }
        cout << trap(height) << endl;
    }
    return 0;
}

#define MAX(a, b) (a > b ? a : b)

int trap(vector<int>& height) {
    int left = 0, l_block = height[left];
    int right = height.size() - 1, r_block = height[right];
    
    int ans = 0;
    while (left < right) {
        if (l_block < r_block) {
            ans += l_block - height[left];
            left++;
            l_block = MAX(l_block, height[left]);
        } else {
            ans += r_block - height[right];
            right--;
            r_block = MAX(r_block, height[right]);
        }
    }
    return ans;
}
全部评论

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹&nbsp;是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹&nbsp;待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹&nbsp;能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥&nbsp;内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务