单调栈
文章平均质量分 57
烟白
这个作者很懒,什么都没留下…
展开
-
139、★LeetCode-柱状图中最大的矩形
本题:往两侧找第一个小于当前值的值!按照栈底到栈顶递增:出现小于栈顶元素的情况时,就是右侧小于当前值的第一个值出现;栈中一直保持递增(相等的问题不好处理,但是更靠近栈底的数字就包含了所有情况),前一个元素就是左侧第一个!本题中会出现:最后栈中保持递增,有许多位置无法处理的情况!在一维数组中,遇到找两侧最值的问题,经常就是单调栈的问题;1)暴力:for中套while,往两侧找,时间复杂度大。注意坐标的考虑,栈中紧挨着,不代表数组中紧挨着!求在该柱状图中,能够勾勒出来的矩形的最大面积。原创 2022-09-11 21:17:26 · 145 阅读 · 0 评论 -
138、★很经典的一道题目:LeetCode-42.接雨水
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。本题:单调递减的栈;遇到更大的元素,就要开始处理之前的每一个元素,直到遇到更大的元素(此时要继续处理一次;1)单调栈:单调栈其实将每一个元素都做了入栈操作!输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]如果没有更大的元素,就直接入栈,左边的情况还是处理完了!的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。原创 2022-09-10 23:10:11 · 145 阅读 · 0 评论 -
137、LeetCode-503.下一个更大元素Ⅱ
给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。本题是将数组变为循环数组:因此单调栈的查找需要 2*N的长度;第二个 1 的下一个最大的数需要循环搜索,结果也是 2。解释: 第一个 1 的下一个更大的数是 2;输入: nums = [1,2,1]输出: [2,-1,2]原创 2022-09-08 23:00:24 · 230 阅读 · 0 评论 -
136、LeetCode-496.下一个更大元素Ⅰ
对于每个 0原创 2022-09-08 16:54:00 · 272 阅读 · 0 评论