标签:histogram 今天 rect 就是 破坏 入栈 ppi 递增 rectangle
今天做周赛又碰到了单调栈的题目,之前没有做好总结,这次好好总结下
在一个线性数据结构中,为任意一个元素找左边和右边第一个比自己大/小的位置,要求O(n)的复杂度
基本解法很容易想到O(n^2)的解法,关键是O(n)的解法,就需要借助单调栈了。单调栈的一大优势就是线性的时间复杂度,所有的元素只会进栈一次,而且一旦出栈后就不会再进来了。
单调栈里的元素具有单调性:单调递减栈=>向栈生长的地方单调递减;单调递增栈=>向栈生长的地方单调递增
元素加入栈前,会在栈顶端把破坏栈单调性的元素都删除
使用单调栈可以找到元素向左遍历第一个比他小的元素,也可以找到元素向左遍历第一个比他大的元素。
递减栈会剔除波谷,留下波峰;递增栈剔除波峰,留下波谷
题意:
思路:
代码:
标签:histogram 今天 rect 就是 破坏 入栈 ppi 递增 rectangle
原文地址:https://www.cnblogs.com/shawshawwan/p/10166459.html