首页 > 其他分享 >接雨水/直方图的水量

接雨水/直方图的水量

时间:2023-02-04 20:11:48浏览次数:34  
标签:right sum 雨水 height 水量 直方图 let left

题目:

给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。

输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6
一个单位的水不会流出去,当且仅当水平往左能看到墙且水平往右能看到墙。
针对每一个水平位置,我们需要知道左边最高有多高,右边最高有多高,较低的就是当前这点的水位,比如位置5,左边最高是2(位置3)右边最高3(位置7),那么水位是2,减去底部高度0,水量是2。
需要一个数组left,left[i]表示i左边(不含i)最高是多高,一个数组right,right[i]表示i右边(不含i)最高是多高。
left[0]=0,因为0没有左边了,往右遍历,我们取最大值,每一项(left[i])是前一项(left[i-1])和前一个高度(height[i-1])的最大值。
right就是相反,最后一项是0然后往左遍历。
然后定义一个变量sum作为结果,累加每个水平位置的水量。时间复杂度空间复杂度都是O(n)
/**
 * @param {number[]} height
 * @return {number}
 */
var trap = function(height) {
    let left=new Array(height.length);
    let right=new Array(height.length);
    left[0]=0;
    for(let i=1;i<left.length-1;i++){
        left[i]=Math.max(left[i-1],height[i-1]);
    }
    right[right.length-1]=0;
    for(let i=right.length-2;i>0;i--){
        right[i]=Math.max(right[i+1],height[i+1]);
    }
    let sum=0;
    for(let i=1;i<height.length-1;i++){
        let minH=Math.min(left[i],right[i]);
        if(minH>height[i])
            sum+=minH-height[i];
    }
    return sum;
};

 

标签:right,sum,雨水,height,水量,直方图,let,left
From: https://www.cnblogs.com/nsyglpc/p/17092245.html

相关文章

  • [20221227]Adaptive Cursor Sharing & 直方图.txt
    [20221227]AdaptiveCursorSharing&直方图.txt--//前一阵子在做优化时我想当然以为重新分析取消某个日期字段的直方图信息,就不会出现大量子光标问题,结果发现我错了.--......
  • [20221228]Adaptive Cursor Sharing & 直方图2.txt
    [20221228]AdaptiveCursorSharing&直方图2.txt--//前一阵子在做优化时我想当然以为重新分析取消某个日期字段的直方图信息,就不会出现大量子光标问题,结果发现我错了.-......
  • 跟我学Python丨图像增强及运算:局部直方图均衡化和自动色彩均衡化处理
    摘要:本文主要讲解图像局部直方图均衡化和自动色彩均衡化处理。这些算法可以广泛应用于图像增强、图像去噪、图像去雾等领域。本文分享自华为云社区《​​[Python从零到壹]......
  • 跟我学Python丨图像增强及运算:局部直方图均衡化和自动色彩均衡化处理
    摘要:本文主要讲解图像局部直方图均衡化和自动色彩均衡化处理。这些算法可以广泛应用于图像增强、图像去噪、图像去雾等领域。本文分享自华为云社区《[Python从零到壹]五......
  • 26 直方图均衡化
    26直方图均衡化opencv知识点:均衡灰度图像的直方图-equalizeHist本课所解决的问题:什么是图像直方图均衡化?如何均衡化灰度图像的直方图?如何均衡化彩色图像的直方......
  • 25 二维直方图
    25二维直方图opencv知识点:计算直方图数据-calcHist四舍五入浮点数-cvRound寻找最小/最大值-minMaxLoc本课所解决的问题:如何绘制HSV图像的二维直方图?1.二......
  • 24 [图像直方图
    24图像直方图opencv知识点:计算直方图数据-calcHist四舍五入浮点数-cvRound本课所解决的问题:什么是图像直方图?如何绘制彩色图像的一维直方图?1.图像直方图......
  • 图像处理-直方图均衡化
    文章目录​​1、直方图均衡化​​​​1.1什么是直方图均衡化​​​​1.2为什么要进行直方图均衡化​​​​1.3怎样进行直方图均衡化​​​​2、案例分析​​​​2.1代码......
  • 基于局部直方图相关算法的近似优化和提速。
    基于局部直方图的算法有很多很多,比如中值模糊、表面模糊、选择性模糊等等,这类算法有个通病,就是即使选择使用SIMD指令加速,因为其内在的特性,速度还是不能很......
  • 基于局部直方图相关算法的近似优化和提速。
    基于局部直方图的算法有很多很多,比如中值模糊、表面模糊、选择性模糊等等,这类算法有个通病,就是即使选择使用SIMD指令加速,因为其内在的特性,速度还是不能很......