• 636. 132 模式


    给你一个 n 个整数的序列 a1,a2,...,an,一个 132 模式是对于一个子串 ai,aj,ak,满足 ij < k 和 ai < ak < aj。设计一个算法来检查输入的这 n 个整数的序列中是否存在132模式。
    n 会小于 20,000

    样例

    给你序列 nums = [1,2,3,4] 
    返回 False//没有132模式在这个序列中。
    给你序列 nums = [3,1,4,2] 
    返回 True//存在132模式:[1,4,2]。

     
    这道题还是花了很久的,主要是栈用的不够熟练,没想到这种题怎么结合栈来解
     1 bool find132pattern(vector<int> &nums) {
     2         // write your code here
     3         if(nums.size()<3){
     4             return false;
     5         }
     6         
     7         stack<int> s;
     8         int third=INT_MIN;//first,second,third; second>third>first -> true
     9         for(int i=nums.size()-1;i>=0;i--){
    10             if(nums[i]<third){
    11                 return true;
    12             }
    13             else{
    14                 while(!s.empty() && nums[i]>s.top()){
    15                     third=s.top();
    16                     s.pop();
    17                 }
    18             }
    19             s.push(nums[i]);
    20         }
    21         return false;
    22     }
  • 相关阅读:
    点分治
    主席树
    可持久化并查集
    可持久化线段树
    网络流
    AC自动机
    线性基
    快速幂
    素数筛
    扩展欧几里得算法
  • 原文地址:https://www.cnblogs.com/TheLaughingMan/p/8322469.html
Copyright © 2020-2023  润新知