LeetCode 456. 132模式(逆序遍历+单调栈)
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模式(逆序遍历+单调栈)相关推荐
- Java实现 LeetCode 456 132模式
456. 132模式 给定一个整数序列:a1, a2, -, an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj ...
- leetcode 456. 132 模式(单调栈)
给你一个整数数组 nums ,数组中共有 n 个整数.132 模式的子序列 由三个整数 nums[i].nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 num ...
- [剑指offer][JAVA]面试题第[33]题[二叉搜索树的后序遍历][单调栈][递归分治]
[问题描述][中等] 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同.参考以下这颗二叉搜索树:5/ ...
- POJ2828 Buy Tickets【线段树,逆序遍历】
刚开始看到题目,想用memmove偷懒,结果TLE,后来查了查,才发现用memmove也是O(n^2)的复杂度... #include <stdio.h> #include <str ...
- map容器的使用 逆序遍历map容器当中的数据
一:前言 这个逆序遍历是将map容器的迭代器进行了变化,reverse_iterator逆向遍历的迭代器 ,它需要 rbegin()和rend()方法指出反向遍历的 起始位置和终止位置. 二:上码演示 ...
- Java LinkedHashMap 逆序遍历
利用:ListIterator<pre name="code" class="java">previous 代码如下 public static v ...
- 【C#懒蛋编程——5分钟经验分享】01逆序遍历删除,防止迭代器失效
因为篇幅很短,所以尝试全文字写法.几分钟看完的文字也没必要用十几分钟写完是吧. foreach遍历List操作很方便,这节省了部分[]取数据和下标计算的代码.写起来很简洁.但是如果是遍历删除的话,你会 ...
- 树的先序遍历的栈实现
树的先序遍历的栈实现 先把根节点访问了,右子树入栈,去访问左子树. 1 void preorder(tree bt) //先序遍历bt所指的二叉树 2 { 3 tree stack[n]; //栈 4 ...
- (必背)二叉树的前中后序遍历(利用栈)
二叉树的前序遍历(利用栈) 1.首先将根节点压入栈 2.栈中的首元素出栈,然后先将其右节点压入栈中,再将栈中的左节点压入栈中(如果左右节点分别存在的话) 3.重复步骤2直到栈为空 class Solu ...
最新文章
- 設備(IE01/IE02/IE03)客製欄位及BAPI處理
- Object Detection(目标检测神文)
- String到底是值类型还是引用类型(C#)
- python提取cad坐标到excel_使用python来操作autocad,并且将坐标点转换成cad可见对象...
- 如何在linux下创建一个可运行shell脚本?
- electron 解压zip_node.js实现简单的压缩/解压缩功能示例
- stm32 网络 服务器通信协议,利用stm32的lwip TCP/IP协议栈的通信的思路
- SAP License:利润中心的替代应用
- LeetCode 热题 HOT 100 完整题解笔记知识点分类 C++代码实现
- python安装选项_Python PyInstaller安装和使用教程(详解版)
- php千月影视,千月影视双端源码完美运营新手搭建教程
- git 恢复被删除的文件
- 攻防世界-杂项-simple_transfer
- 直播 编解码、 协议、网络传输
- 【校内模拟】八云蓝(线段树)(大力分类讨论)
- epic注册什么服务器最好,epic国内有服务器吗(epic服务器在哪)
- error:Fatal error: Uncaught -- Smarty Compiler: Syntax error in template D:\sms\xampp\htdocs\lanyu
- Again! There are tons of wrong answers!
- TP-LINK TL-WDN7200H ubuntu驱动安装
- 31省份推出40万亿投资蓝图 新基建、公共卫生成亮点
热门文章
- AIML元素详细说明
- TotoiseSVN的上手教程
- java sunjce,无法初始化类javax.crypto.SunJCE_b
- 编写linux驱动程序步骤
- MATLAB各类函数详细讲解 simulike系统仿真分析
- 数据结构探险——线性表篇
- 汇编指令的学习4——ldm/stm指令、栈的处理
- android自动化持续集成,Android系统的持续集成自动化测试框架的研究与实践
- php excel 分页,excel分页线怎么增加
- 6. Nginx + PHP + FastGCI安装