单调栈
文章平均质量分 52
empty__barrel
这个作者很懒,什么都没留下…
展开
-
力扣:739. 每日温度
题目实现的目的是:求出下一个更大值与当前值的距离,因此只需要将值一个个的入进去,首先入第一个值,然后入第二个值,假如第二个值大于第一个值此时即找到了位置,此时就可以将第一个值出栈,假如第二个值小于等于第一个值,那么只有入栈操作,给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。遍历完时此时就可以计算出结果了,栈内若还有值那么其与下一个更大值的距离为0。...原创 2022-08-16 14:45:09 · 399 阅读 · 0 评论 -
力扣:84.柱状图中最大的矩形
这个可以过,原因在于:求当前值左边更大值的下标可以通过dp数组对应的前面一个值来取巧,而并不需要从当前值向左遍历所有情况来取得当前值左边更大值的下标。本题是要找每个柱子左右两边第一个小于该柱子的柱子,因此当遍历到某值小于栈顶时,栈顶对应的柱体的最大面积就找到了。其结果很明显是:短的矩形条然后向左右延伸不包括其左边第一个小于该柱子的矩形条,不包括其右边第一个大于该柱子的矩形条,所形成的的矩形。求在该柱状图中,能够勾勒出来的矩形的最大面积。在查看所有可能的最大矩形后:发现最大矩形中。...原创 2022-08-16 14:41:12 · 348 阅读 · 0 评论 -
力扣:42. 接雨水
在法1中为了得到两边的最高高度,使用了双指针来遍历,每到一个柱子都向两边遍历一遍,这其实是有重复计算的。我们把每一个位置的左边最高高度记录在一个数组上(maxLeft),右边最高高度记录在一个数组上(maxRight)。这样就避免了重复计算,这就用到了动态规划。求每一列的雨水然后将它们相加,可以看出每一列雨水的高度,取决于该列 左侧最高的柱子和右侧最高的柱子中 更矮的那个柱子的高度。给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。...原创 2022-08-15 17:39:12 · 1454 阅读 · 0 评论 -
力扣:503.下一个更大元素II
给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。此题目一一开始的思路就是遍历一遍然后再遍历一遍(过程如上题)。......原创 2022-08-15 16:12:08 · 80 阅读 · 0 评论 -
力扣:496.下一个更大元素 I
因此可以在nums1中查找此值是否存在,然后找出此值在nums1中的下标,然后result数组进行赋值即可,此时发现需要查找操作,和记录nums1中元素的下标,因此使用了字典。对于每个 0原创 2022-08-15 11:22:39 · 66 阅读 · 0 评论 -
单调栈理论基础
怎么能想到用单调栈呢? 什么时候用单调栈呢?单调栈里存放的元素是什么?单调栈里元素是递增呢? 还是递减呢?使用单调栈主要有三个判断条件:书写代码的时候可能可以化简,例如这三种情况元素都会入栈,那么只需要在最后加一个入栈操作即可,那么就可以省略某些情况了...原创 2022-08-15 10:49:51 · 82 阅读 · 0 评论