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

     单调栈题型

     暴力做法

     

     然后寻找性质

     横轴是下标,纵轴是值

    a[i] 之后要插进来

    如果栈顶元素stk[tt] >= a[i]的话,那么stk[tt]就可以被删掉

    一直删到找到了一个小于a[i]的栈顶元素为止

    如果stk[tt] < a[i]了,那么此时stk[tt]就是我要找的a[i]的左边,离a[i]最近的,且比它小的元素了

    输出后,然后再把a[i]插到栈里面去

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 100010;
     4 int stk[N], tt;
     5 int main() {
     6     int n;
     7     cin >> n;
     8     for (int i = 0; i < n; i++) {
     9         int x;
    10         cin >> x; //每次读入一个x
    11         while (tt > 0 && stk[tt] >= x) { //只要栈是不空的,且栈顶元素大于等于x
    12             tt--;
    13         }
    14         if (tt) { //如果还是不空的
    15             cout << stk[tt] << " "; //那么栈顶元素就是答案
    16         } else {
    17             cout << -1 << " "; 
    18         }
    19         stk[++tt] = x; //加进去
    20     }
    21     return 0;
    22 }
  • 相关阅读:
    Maven配置始终获取最新版本
    使用SpringBoot
    SpringBoot文档综述
    35_方法的使用
    34_结构体指针类型的使用
    33_同名字段的使用
    32_匿名字段的使用
    31_结构体的使用
    30_map的使用
    29_猜字游戏
  • 原文地址:https://www.cnblogs.com/fx1998/p/13285444.html
Copyright © 2011-2022 走看看