单调栈
文章平均质量分 50
无
旺 崽
这个作者很懒,什么都没留下…
展开
-
LeetCode 面试题 17.21. 直方图的水量
题目链接给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 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单调栈~首先我们不妨思考一下,什么时候能存水,肯定要出现两高夹一低才行,此时我们把存的水看作是一个矩形,假设遍历到某一高度 iii 时,出现原创 2021-04-03 17:49:54 · 2419 阅读 · 0 评论 -
CSP 201312-3 最大的矩形
题目链接这题和 LeetCode 84 柱状图中最大的矩形 一模一样,思路也比较简单,就是利用单调队列或者单调栈找到位置 iii 坐边第一个小于它高度的下标 lll 和右边第一个大于它高度的下标 rrr,那么此时的最大面积就是 h[i]∗(r−l−1)h[i]*(r-l-1)h[i]∗(r−l−1),维护一个最大值即可,AC代码如下:#include <bits/stdc++.h>using namespace std;int n, a[1005], l[1005], r[1005]原创 2021-03-31 21:20:03 · 1876 阅读 · 0 评论 -
2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)B.找山坡
题目链接题目描述母牛哥在电脑面前坐久了,想站起来看看窗外的小山坡,于是就想出了这个问题:给定一个大小为 n 的数组 a,序号从 1 开始,计算:max{ R - L | 1 <= L <= R <= n, a[L] == a[R], 对于所有i (L <= i <= R), 满足a[i] >= a[L] }.也就是找到两个坐标,这两个坐标的值相等,并且他们之间的值都大于等于这两个坐标上的值.这两个坐标相减最大能是多少.输入描述:第一行一个整数 n,第二行原创 2021-03-29 14:16:38 · 2009 阅读 · 0 评论 -
LeetCode 456 132 模式
题目链接给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4]输出:false解释:序列中不存在 132 模式的子序列。示例 2:输入:nums原创 2021-03-24 19:06:20 · 1958 阅读 · 0 评论 -
LeetCode 503 下一个更大元素 II
题目链接给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数; 第二个 1 的下一个最大的数需要循环搜索,结果也是 2。单调栈~栈内存元素下标,栈顶放最小值,对当前的 n原创 2021-03-06 10:42:45 · 1634 阅读 · 0 评论 -
LeetCode 84 柱状图中最大的矩形
LeetCode 84 柱状图中最大的矩形题目链接给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10单调栈~对每一根柱子 iii,用单调栈分别记录从当前位置到左边第一根高度小于它的柱子的位置 l[i原创 2021-01-25 10:51:22 · 1757 阅读 · 0 评论