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

上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。 感谢 Marcos 贡献此图。

示例:

输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6

解题思路

维护一个单调递减的栈,当遍历到的元素大于栈中元素时,就将栈中的两个元素和当前元素组成一个接雨水的区域

代码

class Solution {public int trap(int[] height) {Stack<Integer> stack=new Stack<>();int n=height.length,res=0;for(int i=0;i<n;i++){while (!stack.isEmpty()&&height[i]>height[stack.peek()]){int top=stack.pop();if(stack.isEmpty())break;int l=stack.peek();int weight=i-l-1;int h=Math.min(height[l],height[i])-height[top];res+=h*weight;}stack.push(i);}return res;}
}

leetcode 面试题 17.21. 直方图的水量(单调栈)相关推荐

  1. 【LeetCode每日一题】——面试题17.21.直方图的水量

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[时间频度] 八[代码实现] 九[提交结果] 一[题目类别] 双指针 二[题目难度] 困难 ...

  2. 面试题 17.21. 直方图的水量/42. 接雨水

    2020-05-16 1.题目描述 直方图的水量 2.题解 对于某一个柱体而言,它上面的水量等于它左右两边柱体最大值最小值的大小减去当前柱体的高度. 3.代码 class Solution { pub ...

  3. leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排

    leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...

  4. [leetcode 面试题 17.17] -- 多次搜索,KMP与字典树

    [leetcode 面试题 17.17] -- 多次搜索 题目来源 分析 KMP思路 完整代码 字典树 完整代码 题目来源 https://leetcode-cn.com/problems/multi ...

  5. ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   有些数的素因子只有 3 ...

  6. LeetCode 面试题 17.16. 按摩师

    面试题 17.16. 按摩师 题目:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替按摩师找到最 ...

  7. leetcode 85. Maximal Rectangle | 85. 最大矩形(单调栈)

    题目 https://leetcode.com/problems/maximal-rectangle/ 题解 本题与 leetcode 84. Largest Rectangle in Histogr ...

  8. leetcode.84 leetcode739. 每日温度(都是单调栈)

    学习不息,转载不止. 后面有自己写的题解.别忘了. 单调栈学习建议以及练习(15:54 开始):「力扣」第 42.739.496.316.901.402.581 题. 这是一个非常典型的利用单调栈来解 ...

  9. leetcode —— 面试题 17.12. BiNode

    二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点).实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就是在原始的二叉 ...

最新文章

  1. ICCV 2017《Unsupervised Laerning of Important Objects from First-Person Videos》论文笔记
  2. Galera Cluster for MySQL 集群恢复
  3. 华为云计算玉溪总经理_华为云计算(6)——FusionAccess
  4. 系统mysql数据库服务器,系统mysql数据库服务器
  5. Bash中的位置参数和特殊参数
  6. HDU 6180 2017 多校训练:Schedule
  7. android高德地图黑色,关于安卓高德地图的手机黑屏花屏模糊等症状处理
  8. typora 语法教程
  9. 常用模块以及常用方法
  10. 微信小程序------开发测试
  11. java数组排序的方法_Java数组排序方法详解
  12. 如何编写一份合格的架构设计文档
  13. 怎么样锁定计算机时间,电脑屏幕锁屏设置时间还是锁不了怎么办
  14. C#反编译工具:.NET Reflector基础使用
  15. C#敏感词汇过滤(不是正则)
  16. AXI3和AXI4的接口信号区别
  17. 眼见为实,看看MySQL中的隐藏列
  18. 用计算机解决问题听课笔记,《用计算机解决问题的一般步骤》说课稿
  19. 记一次系统重装后电脑的优化设置
  20. ANSYS Workbench远端位移边界条件的解析

热门文章

  1. 进程与线程的区别(面试题)
  2. LeetCode2:Add Two Numbers
  3. 你必须知道的CSS盒模型,面试建议
  4. 这些Android高级必会知识点你能答出来几个?含BATJM大厂
  5. asp.net core Serilog的使用
  6. spring3 常见异常解决
  7. 创建一个简单的WCF程序
  8. vsUnit单元测试
  9. MySql简介及概念
  10. ethereumjs/ethereumjs-common-3-test