单调栈
相比于数据结构,单调栈只是栈结构的一种特殊应用。
描述
一般而言单调栈用于记录一个序列从一端开始的单调子序列(不要求连续)。
单调栈的成员可以是原序列成员,也可以是原序列成员的下标。
举例
对于原始序列 a[i] ,维护一个单调栈用于在 O(n) 时间内一趟生成辅助序列 l[i] ,其中 l[i] 为从 a[i] 向左看第一个值小于 a[i] 的成员下标; r[i] 为 l[i] 右侧的对等。
相比于数据结构,单调栈只是栈结构的一种特殊应用。
一般而言单调栈用于记录一个序列从一端开始的单调子序列(不要求连续)。
单调栈的成员可以是原序列成员,也可以是原序列成员的下标。
对于原始序列 a[i] ,维护一个单调栈用于在 O(n) 时间内一趟生成辅助序列 l[i] ,其中 l[i] 为从 a[i] 向左看第一个值小于 a[i] 的成员下标; r[i] 为 l[i] 右侧的对等。