当前位置:网站首页>每日一题-单调栈
每日一题-单调栈
2022-08-05 05:17:00 【菜鸡程序媛】
目录
接雨水
- 时间:0728
- 题目
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

- 思路
- 本题通过单调栈的思路进行解题
- 首先,保持栈内单调递减的顺序,当出现后面的元素值超过栈顶元素的值时,就形成了一个“坑”,坑的体积就是左右两侧更矮的墙*两面墙的间距。
- 循环的结构要采用while,因为比如是20103,当计算完“103”这个坑的时候,还需要计算前面“213”这个坑,当出现更高墙的时候需要将之前的坑的面积都累加到体积中。
- 代码:
public int trap(int[] height) {
if(height == null || height.length == 0)
return 0;
Stack<Integer> stack = new Stack<>();
int sum = 0;
for(int i = 0; i < height.length; i ++){
// 注意这里是while循环
while(!stack.isEmpty() && (height[i] > height[stack.peek()])){
int k = stack.pop(); //柱子的底子
if(stack.isEmpty())
break;
int j = stack.peek(); //此时的左边界
sum += (Math.min(height[i], height[j]) - height[k]) * (i - j - 1);
}
stack.push(i);
}
return sum;
}边栏推荐
猜你喜欢

八、请求处理之自定义类型参数绑定原理

【22李宏毅机器学习】课程大纲概述

LeetCode刷题之第1024题

A deep learning code base for Xiaobai, one line of code implements 30+ attention mechanisms.

ECCV2022 | RU&谷歌提出用CLIP进行zero-shot目标检测!

LeetCode刷题之第129题

SQL(1) - Add, delete, modify and search

OSPF网络类型

1004 成绩排名 (20 分)

八、响应处理——ReturnValueHandler匹配返回值处理器并处理返回值原理解析
随机推荐
网络信息安全运营方法论 (下)
dataframe 常用操作
《基于机器视觉测量系统的工业在线检测研究》论文笔记
五、请求处理—Rest映射是怎样实现的?
【ts】typeScript高阶:any和unknown
Thread handler handle IntentServvice handlerThread
电子产品量产工具(4)-UI系统实现
MySQL主从复制—有手就能学会的MySQL集群搭建教程
MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA
最简单的防抖节流理解法
LeetCode刷题之第61题
MaskDistill-不需要标注数据的语义分割
八、响应处理——ReturnValueHandler匹配返回值处理器并处理返回值原理解析
C语言入门笔记 —— 初识
华科提出首个用于伪装实例分割的一阶段框架OSFormer
C语言联合体union占用空间大小问题
CVPR2020 - 自校准卷积
CAN、CAN FD
GIS面试问题
(oj)原地移除数组中所有的元素val、删除排序数组中的重复项、合并两个有序数组