LeetCode 42. 接雨水

Stella981
• 阅读 578

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

LeetCode  42. 接雨水

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

示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6算法:我们可以观察看出,每一块雨水的面积为当前柱形左边最大高与右边最大高的最小值减去当前高度。故我们维护两个数组即可。此题还有单调栈的解法。

class Solution {
public:
    int trap(vector<int>& height) {
        int n=height.size(),res=0;
        if(!n)return 0;
        vector<int>l(n),r(n);
        l[0]=height[0];
        for(int i=1;i<n;i++)
            l[i]=max(l[i-1],height[i]);
        r[n-1]=height[n-1];
        for(int i=n-2;i>=0;i--)
            r[i]=max(r[i+1],height[i]);
        for(int i=0;i<n;i++)
            res+=min(l[i],r[i])-height[i];
        return res;
    }
};
点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
DaLongggggg DaLongggggg
3年前
python-阶乘计算
问题描述  输入一个正整数n,输出n的值。  其中n123…n。算法描述  n可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A0表示a的个位,A1表示a的十位,依次类推。  将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。  首先将a设为1,然后乘2,
Stella981 Stella981
3年前
Echarts柱状图实现不同颜色渐变色
第一次写文,只是想记录一下自己平时发现的小功能,这篇主要是实现echarts柱状图,每个柱子实现不同颜色的渐变色,也是第一次接触echarts,后台使用ssm,前台是extjs,直接上效果图!(https://oscimg.oschina.net/oscnet/d7e04daefbe994516a605f1d19dc5909504.png)直接上
Stella981 Stella981
3年前
LeetCode(110):平衡二叉树
Easy!题目描述:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树_每个节点_的左右两个子树的高度差的绝对值不超过1。示例1:给定二叉树 3,9,20,null,null,15,73/\920/
Stella981 Stella981
3年前
Pyhon数据分析20——matplotlib可视化(二)之柱状图
atplotlib绘制柱状图柱状图(barchart),是一种以长方形的长度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。柱状图亦可横向排列,或用多维方式表达。准备importnumpyasnpimport
Stella981 Stella981
3年前
LeetCode 5561. 获取生成数组中的最大值
文章目录1\.题目2\.解题1\.题目给你一个整数n。按下述规则生成一个长度为n1的数组nums:nums00nums11当2<2i<n时,nums2inumsi
Wesley13 Wesley13
3年前
C语言实现数据结构的邻接矩阵
写在前面  图的存储结构有两种:一种是基于二维数组的邻接矩阵表示法。            另一种是基于链表的的邻接表表示法。  在邻接矩阵中,可以如下表示顶点和边连接关系:    !(https://oscimg.oschina.net/oscnet/fe38c2aff8c2a62f0d7ab71f55c1eb1cea
Stella981 Stella981
3年前
LeetCode 84.柱状图中最大矩形的面积
给定_n_个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为1。求在该柱状图中,能够勾勒出来的矩形的最大面积。!(https://img2018.cnblogs.com/blog/1735759/201907/1735759201907081935272741040149911.png)以上是柱状图的示例,其中
Wesley13 Wesley13
3年前
JS中的按位非(~)的使用技巧
按位非按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码现在让我来看几个例子例子1console.log(4);console.log(~4);console.log(~~4);!(https://oscimg.oschina.net/oscnet/6d8dbec0d4685dd
Wesley13 Wesley13
3年前
67,盛最多水的容器
给定 _n_ 个非负整数 _a_1,_a_2,...,_a_n,每个数代表坐标中的一个点 (_i_, _ai_)。在坐标内画 _n_ 条垂直线,垂直线 _i_ 的两个端点分别为 (_i_, _ai_)和(_i_,0)。找出其中的两条线,使得它们与 _x_ 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 _n_ 的值至少为2。!