
单调栈
文章平均质量分 59
csu_xiji
这个作者很懒,什么都没留下…
展开
-
力扣 456. 132模式 枚举 二分 贪心 单调栈
https://leetcode-cn.com/problems/132-pattern/ 思路一:枚举位置jjj,根据贪心思想,aia_iai自然要取左侧最小的那个值,那么假设我们有一个数据结构可以维护有序的元素,删除、插入、查询的复杂度都是log(n)log(n)log(n),这个问题就解决了。在右侧待选数据中二分找到>ai>a_i>ai的最小的数,再看其与aja_jaj关系即可。 from sortedcontainers import SortedList class S原创 2021-03-24 16:49:20 · 213 阅读 · 0 评论 -
PIPIOJ 1475: PIPI打怪Ⅲ 单调栈 思维
http://pipioj.online/problem.php?id=1475 思路:对于任意一个数aia_iai,若我们知道在它左侧的第一个小于它的数ala_lal,在它右侧的第一个小于它的数ara_rar,那么当区间被限制到(l,r)(l,r)(l,r)内且包含aia_iai时,这个区间的最小值一定是aia_iai。不妨设ansjans_jansj表示区间长度为jjj时的最大价值,那么显然我们要做一个更新操作:ansj=max(ansj,ai),1<=j<=r−l−1ans_原创 2021-03-06 18:14:58 · 270 阅读 · 2 评论 -
力扣 85. 最大矩形 单调栈
https://leetcode-cn.com/problems/maximal-rectangle/ 思路:这题其实和力扣848484很像。如果能把这个矩阵转换成高度数组(柱状图),那么利用单调栈就可以在线性复杂度内求解出柱状图内的最大矩形面积。这个转换其实很简单,我们用heights[i]heights[i]heights[i]表示第iii列的高度,依次枚举nnn行即可(枚举第iii行就相当于把第iii行作为柱状图的底部)。 class Solution { public: int large原创 2020-08-22 15:24:48 · 187 阅读 · 0 评论 -
力扣 503. 下一个更大元素 II 单调栈 序列化环
https://leetcode-cn.com/problems/next-greater-element-ii/ 思路:单调栈模板题,只不过变成了环形数组。序列化环其实很简单,比如1、2、31、2、31、2、3化环就是1、2、3、1、21、2、3、1、21、2、3、1、2,把序列的前n−1n-1n−1个元素放到尾端即可。 class Solution { public: vector<int> nextGreaterElements(vector<int>& nu原创 2020-08-13 00:34:09 · 189 阅读 · 0 评论 -
力扣 1130. 叶值的最小代价生成树 区间dp/单调栈
https://leetcode-cn.com/problems/minimum-cost-tree-from-leaf-values/ 思路一:区间dpdpdp,dp[i][j]dp[i][j]dp[i][j]表示合并[i,j][i,j][i,j]所能得到的二叉树中非叶节点总和最小的值。枚举断点kkk,表示我们先分别合并[i,k][i,k][i,k]和[k+1,j][k+1,j][k+1,j],再合并它们,那么有:dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+Max原创 2020-08-12 13:18:10 · 268 阅读 · 0 评论 -
力扣 面试题 17.21. 直方图的水量 dp/双指针/单调栈
https://leetcode-cn.com/problems/volume-of-histogram-lcci/ 思路一:单独考虑每一个位置iii,假设在[0,i−1][0,i-1][0,i−1]内的最大值为maxlmaxlmaxl,在[i+1,n−1][i+1,n-1][i+1,n−1]内的最大值为maxrmaxrmaxr,则位置iii的存水量等于max(height[i],min(maxl,maxr))−height[i]max(height[i],min(maxl,maxr))-height[i原创 2020-08-12 09:43:12 · 229 阅读 · 0 评论 -
力扣 739. 每日温度 单调栈
https://leetcode-cn.com/problems/daily-temperatures/ 思路:单调栈的简单变形。 class Solution { public: vector<int> dailyTemperatures(vector<int>& T) { stack<int> s; int siz=T.size(); vector<int> ans(siz);原创 2020-08-11 20:35:52 · 270 阅读 · 0 评论 -
力扣 496. 下一个更大元素 I 单调栈 哈希
https://leetcode-cn.com/problems/next-greater-element-i/ 思路:题目说的花里胡哨……其实就是对于nums2nums2nums2的每一个元素,求出位于其右侧且大于它的一个元素的值就可以了,搞一个单调栈就行了,维护一个单调递减栈即可在线性复杂度内求出。但是考虑到nums1nums1nums1是乱序的,所以需要再搞一个哈希表。 class Solution { public: vector<int> nextGreaterElement原创 2020-08-11 20:20:12 · 261 阅读 · 0 评论 -
力扣 1019. 链表中的下一个更大节点 链表+单调栈
https://leetcode-cn.com/problems/next-greater-node-in-linked-list/ 思路:简而言之,就是求每个节点右侧大于它的第一个节点的值。单调栈可解,首先把链表转为普通的数组就行了。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), n原创 2020-08-06 23:20:37 · 328 阅读 · 0 评论 -
codeforces 1313C2 Skyscrapers (hard version) 单调栈+dp
https://vjudge.net/problem/CodeForces-1313C2 思路:不难想到枚举一个最高点iii,然后[1…i][1…i][1…i]非降,[i,n][i,n][i,n]非升即可满足题意。实际上这也是简单版的做法。我们搞两个数组l、rl、rl、r,l[i]l[i]l[i]表示当[1…i][1…i][1…i]非降时所能得到的最高分,r[i]r[i]r[i]表示当[i…n][...原创 2020-04-12 16:16:18 · 151 阅读 · 0 评论 -
力扣 42. 接雨水 单调栈 dp
https://leetcode-cn.com/problems/trapping-rain-water/ 思路一:维护一个单调非升的栈,栈中存储的是数组的下标,那么如果height[i]>height[s.top()]height[i]>height[s.top()]height[i]>height[s.top()],此时要判断一下栈中的元素是不是>=2>=2&g...原创 2020-03-15 22:28:30 · 278 阅读 · 0 评论 -
力扣 84. 柱状图中最大的矩形 单调栈
https://leetcode-cn.com/problems/largest-rectangle-in-histogram/ 思路:维护一个单调非降的栈,栈中存放的是该柱子在heightsheightsheights数组中的下标,那么当heights[i]<heights[s.top()]heights[i]<heights[s.top()]heights[i]<heigh...原创 2020-03-15 20:52:58 · 526 阅读 · 0 评论 -
CSUOJ 1901 赏赐 OR 灾难 单调栈
Description 大G南征北战终于打下了大片土地成立了G国,大G在开国大典上传召帮助自己南征北战的三大开国元勋小A,小B,小C进殿,并要赏赐三人大量宝物以显示天恩浩荡。大G在征服其他国家的时候抢夺了n箱宝物,他把这些箱子依次排列在三人面前,每个箱子里的宝物都有一个价值wi,大G令他们一人选取一个箱子作为奖励。 可是令大G万万没有想到的是,三人在私底下是存在竞争关系的,由于小B手上兵权强于小C...原创 2019-08-31 15:23:10 · 124 阅读 · 0 评论 -
codeforces 1300E Water Balance 单调栈+贪心
https://vjudge.net/problem/CodeForces-1300E 题目大意:给一个数组,每次操作可以选取一个区间[l,r][l,r][l,r],使得a[l…r]=∑i=lra[i]/(r−l+1)a[l…r]=\sum_{i=l}^{r}a[i]/(r-l+1)a[l…r]=∑i=lra[i]/(r−l+1)。问这个数组的最小的字典序。 思路:贪心的想一下,肯定要让左侧的...原创 2020-03-15 19:31:48 · 162 阅读 · 1 评论