1. 题目

给定一个整数序列:a1, a2, …, an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj
设计一个算法,当给定有 n 个数字的序列时,验证这个序列中是否含有132模式的子序列。

注意:n 的值小于15000。
示例1:
输入: [1, 2, 3, 4]
输出: False
解释: 序列中不存在132模式的子序列。示例 2:
输入: [3, 1, 4, 2]
输出: True
解释: 序列中有 1 个132模式的子序列: [1, 4, 2].示例 3:
输入: [-1, 3, 2, 0]
输出: True
解释: 序列中有 3 个132模式的的子序列: [-1, 3, 2], [-1, 3, 0] 和 [-1, 2, 0].

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/132-pattern
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题


当5要入栈时,不满足递减了
更新第二大数Ak为栈顶,弹栈,继续检查,最后栈内空,Ak=4,push 5
下一个数 3 < Ak(第二大),存在

class Solution {public:bool find132pattern(vector<int>& nums) {if(nums.size() < 3)return false;stack<int> s;//单调递减栈int Ak = INT_MIN;//第二大的数for(int i = nums.size()-1; i >= 0; --i){if(Ak > nums[i])return true;while(!s.empty() && nums[i] > s.top()){Ak = s.top();s.pop();}s.push(nums[i]);}return false;}
};

36 ms 17.5 MB

LeetCode 456. 132模式(逆序遍历+单调栈)相关推荐

  1. Java实现 LeetCode 456 132模式

    456. 132模式 给定一个整数序列:a1, a2, -, an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj ...

  2. leetcode 456. 132 模式(单调栈)

    给你一个整数数组 nums ,数组中共有 n 个整数.132 模式的子序列 由三个整数 nums[i].nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 num ...

  3. [剑指offer][JAVA]面试题第[33]题[二叉搜索树的后序遍历][单调栈][递归分治]

    [问题描述][中等] 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同.参考以下这颗二叉搜索树:5/ ...

  4. POJ2828 Buy Tickets【线段树,逆序遍历】

    刚开始看到题目,想用memmove偷懒,结果TLE,后来查了查,才发现用memmove也是O(n^2)的复杂度... #include <stdio.h> #include <str ...

  5. map容器的使用 逆序遍历map容器当中的数据

    一:前言 这个逆序遍历是将map容器的迭代器进行了变化,reverse_iterator逆向遍历的迭代器 ,它需要 rbegin()和rend()方法指出反向遍历的 起始位置和终止位置. 二:上码演示 ...

  6. Java LinkedHashMap 逆序遍历

    利用:ListIterator<pre name="code" class="java">previous 代码如下 public static v ...

  7. 【C#懒蛋编程——5分钟经验分享】01逆序遍历删除,防止迭代器失效

    因为篇幅很短,所以尝试全文字写法.几分钟看完的文字也没必要用十几分钟写完是吧. foreach遍历List操作很方便,这节省了部分[]取数据和下标计算的代码.写起来很简洁.但是如果是遍历删除的话,你会 ...

  8. 树的先序遍历的栈实现

    树的先序遍历的栈实现 先把根节点访问了,右子树入栈,去访问左子树. 1 void preorder(tree bt) //先序遍历bt所指的二叉树 2 { 3 tree stack[n]; //栈 4 ...

  9. (必背)二叉树的前中后序遍历(利用栈)

    二叉树的前序遍历(利用栈) 1.首先将根节点压入栈 2.栈中的首元素出栈,然后先将其右节点压入栈中,再将栈中的左节点压入栈中(如果左右节点分别存在的话) 3.重复步骤2直到栈为空 class Solu ...

最新文章

  1. 設備(IE01/IE02/IE03)客製欄位及BAPI處理
  2. Object Detection(目标检测神文)
  3. String到底是值类型还是引用类型(C#)
  4. python提取cad坐标到excel_使用python来操作autocad,并且将坐标点转换成cad可见对象...
  5. 如何在linux下创建一个可运行shell脚本?
  6. electron 解压zip_node.js实现简单的压缩/解压缩功能示例
  7. stm32 网络 服务器通信协议,利用stm32的lwip TCP/IP协议栈的通信的思路
  8. SAP License:利润中心的替代应用
  9. LeetCode 热题 HOT 100 完整题解笔记知识点分类 C++代码实现
  10. python安装选项_Python PyInstaller安装和使用教程(详解版)
  11. php千月影视,千月影视双端源码完美运营新手搭建教程
  12. git 恢复被删除的文件
  13. 攻防世界-杂项-simple_transfer
  14. 直播 编解码、 协议、网络传输
  15. 【校内模拟】八云蓝(线段树)(大力分类讨论)
  16. epic注册什么服务器最好,epic国内有服务器吗(epic服务器在哪)
  17. error:Fatal error: Uncaught -- Smarty Compiler: Syntax error in template D:\sms\xampp\htdocs\lanyu
  18. Again! There are tons of wrong answers!
  19. TP-LINK TL-WDN7200H ubuntu驱动安装
  20. 31省份推出40万亿投资蓝图 新基建、公共卫生成亮点

热门文章

  1. AIML元素详细说明
  2. TotoiseSVN的上手教程
  3. java sunjce,无法初始化类javax.crypto.SunJCE_b
  4. 编写linux驱动程序步骤
  5. MATLAB各类函数详细讲解 simulike系统仿真分析
  6. 数据结构探险——线性表篇
  7. 汇编指令的学习4——ldm/stm指令、栈的处理
  8. android自动化持续集成,Android系统的持续集成自动化测试框架的研究与实践
  9. php excel 分页,excel分页线怎么增加
  10. 6. Nginx + PHP + FastGCI安装