随笔分类 -  单调栈

摘要:题目 题解: 对于每个元素,它只有当左边的元素大于它的时候才能被删去。 维护一个数组,dp dp[i]表示第i个元素被删去需要多少步 维护一个单调递减的栈,用来查找每个元素的左边的第一个大于它的元素的位置 对于每个元素i,假设左边第一个大于的元素的位置是k,那么元素i需要等待区间[i-k]的元素都被 阅读全文
posted @ 2022-06-04 00:46 Shendu.CC 阅读(273) 评论(1) 推荐(1) 编辑
摘要:"题目" 题意:在一个固定长度的滑动窗口里,计算窗口里的最大值,并且这个滑动窗口每次移动一个。 题解:首先想到的是set,窗口滑动,就是删除一个数,增加一个数,都是O(logn)的效率 80ms 我们还可以用单调栈,实现在窗口滑动的过程中O(1)的效率得到最小值。 单调栈是一个单调递减的栈,入栈,也 阅读全文
posted @ 2020-03-04 15:52 Shendu.CC 阅读(89) 评论(0) 推荐(0) 编辑
摘要:"题目" 单调栈。 如果用O(n^2)的算法,必定超时。 所以我们可以用单调栈,来实现O(n)效率的算法。 单调栈是递增的,每个长方形入栈时,都和栈顶的长方形高度对比,如果大于,则入栈。如果小于则按照高度合并长方形,直到比它高度小的元素,然后再进栈。 最后挨个出栈。 而出栈的过程才是真正计算长方形面 阅读全文
posted @ 2019-11-15 14:28 Shendu.CC 阅读(82) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示