!-- Loading 底层遮罩 -->

单调栈

以查找序列元素右边第一个大于它的元素的下标为例:

 

    int  top ,  st [ MAXN ] ,  val [ MAXN ] ,  ans [ MAXN ] ;
    for  ( int  i  =  1 ;  i  <=  n ;  i++ )
    {
        cin  >>  val [ i ] ;
        while  ( top  >  0  &&  val [ i ]  >  val [ st [ top ] ] )
            ans [ st [ top-- ] ]  =  i ;
        st [ ++top ]  =  i ;
    }

 

posted @ 2022-03-30 18:35  Thinker-X  阅读(33)  评论(0)    收藏  举报