栈
garett.
这个作者很懒,什么都没留下…
展开
-
[LeetCode] 直方图的水量 单调栈
题面: 算是单调栈的经典题目吧,但我觉得还是有一定的思维含量在里边。 做法: 首先维护一个类似下图中的单调栈。 接下来我们可以考虑类似按高度分层的方法来计算能够接的雨水量。例如出现一个直方其高度为h1比当前栈顶的直方h2要高的话,那么就将h2出栈,如果此时栈不为空且栈顶的直方高度为h3的话,那么此时对答案的贡献为(min(h1,h3)-h3)*w,w表示h1到h3之间的宽度。 代码: class Solution: def trap(self, height: List[int原创 2021-04-02 11:08:21 · 116 阅读 · 0 评论 -
[51nod] 汽油补给 贪心+单调栈+线段树
题面: 比较难的贪心。倒序枚举每一个城市,用单调栈处理出当前城市x到之后的哪个城市y油价一直是最低的,那么x到y+1消耗的汽油都应该在x处加,这是油箱容量T大于等于x到y+1所耗费的油量的情况。当T小于x到y+1所耗费的油量时,就应该选择从x到可以到达的最远城市间(这个可以用前缀和二分预处理)油价最低的城市加油,这个操作可以用ST表实现,但我选择的是线段树(太久没用了,想练练hhh)。 import java.io.OutputStream; import java.io.IOException原创 2021-04-01 17:22:13 · 112 阅读 · 0 评论