当前位置:网站首页>每日一题-单调栈
每日一题-单调栈
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;
}
边栏推荐
猜你喜欢
随机推荐
(C语言)strlen、strcpy、strcat、strcmp、strstr函数的模拟实现
Polygon计算每一个角的角度
发顶会顶刊论文,你应该这样写作
【ts】typescript高阶:分布式条件类型
OSPF网络类型
电子产品量产工具(4)-UI系统实现
CH32V307 LwIP移植使用
电子产品量产工具(1)- 显示系统实现
关于存储IOPS你必须了解的概念
(oj)原地移除数组中所有的元素val、删除排序数组中的重复项、合并两个有序数组
Comparison and summary of Tensorflow2 and Pytorch in terms of basic operations of tensor Tensor
Redis集群(docker版)——从原理到实战超详细
CVPR best paper winner Huang Gao's team from Tsinghua University presented the first dynamic network review
The University of Göttingen proposed CLIPSeg, a model that can perform three segmentation tasks at the same time
【Multisim仿真】直流稳压电源设计报告
盘点关于发顶会顶刊论文,你需要知道写作上的这些事情!
CVPR 2022 |节省70%的显存,训练速度提高2倍
【22李宏毅机器学习】课程大纲概述
LeetCode刷题之第61题
栈的应用——力扣 20.有效的括号