zoukankan      html  css  js  c++  java
  • 单调栈

    1,何为单调栈

    顾名思义就是一个栈内元素满足单调性的栈,分为单调增栈与单调减栈。

    2,怎样维护一个单调栈

    (1)当新元素在单调性上优于栈顶时(单增栈新元素比栈顶大,单减栈新元素比栈顶小),压栈,栈深+1;

    (2)当新元素在单调性与栈顶相同(新元素于栈顶相同)或劣于栈顶时(单增栈新元素比栈顶小,单减栈新元素比栈顶大),弹栈,栈深-1;

    3,单调栈的实现

    还是以单调增栈为例。

     1 for(int i=1;i<=n;i++)
     2     {
     3         scanf("%d%d",&w,&h);
     4         while(s[top]>=h)
     5         {
     6             if(s[top]>h&&top>0) top--;
     7             else top--,ans--;
     8         }
     9         s[++top]=h; 
    10     }

    注意,弹栈时要保证top>0,以防新元素为负数进入死循环。

  • 相关阅读:
    redis安装以及php扩展
    Linux下php安装Redis扩展
    正则验证邮箱
    常用方法
    PHPExcel说明
    冒泡排序
    CURL post请求
    PHP生成随机字符串
    PHP中的字符串函数
    PHP中的数组函数
  • 原文地址:https://www.cnblogs.com/Hoyoak/p/11399153.html
Copyright © 2011-2022 走看看