zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    java的堆和栈
    概率题
    并发复习在回顾
    hashmap和hashtable
    StringBuilder和StringBuffer
    WinSCP 工具
    网络桥接注意问题。
    虚拟机网络设置
    Spring任务计划
    Spring任务执行器(TaskExecutor)
  • 原文地址:https://www.cnblogs.com/TheLaughingMan/p/8322469.html
Copyright © 2011-2022 走看看