博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LC-456 132模式
阅读量:5268 次
发布时间:2019-06-14

本文共 1047 字,大约阅读时间需要 3 分钟。

目的:

给出一组数字,判断该数组中是否含有132模式的串,132模式,即存在i,j,k,均为数组的下标,且i < j < k,而对应的数字Ai,Aj,Ak,有关系Ai < Ak < Aj

 

思路:

因为存在i < j < k,这一关系,所以我们从后开始遍历数组,就能保证这个条件成立。

我们用一个变量s3来记录可能的Ak然后我们每遍历到一个数字,判断其是否小于s3,如果小于则满足Ai < Ak的关系。

而s3的来源是什么呢?我们使用一个栈,用来记录下当前第i个数字的后面所以可能为Aj的数字。

即当遍历到的数字大于等于s3(即不为Ai,有机会为Aj),这时我们判断该数字与栈顶元素的大小关系,若栈不为空且该数字比栈顶元素大,将栈顶元素出栈并把出栈的元素赋值到s3,直到栈为空或该数字比栈顶元素小。然后将该数字入栈。

所以刚入栈的数字与s3天然就有s3 < Aj。这时,遍历下一个,而刚遍历到的Ai,如果其小于s3,则满足Ai < Ak的关系。所以就有关系Ai < Ak < Aj

 

代码:

1 class Solution { 2 public: 3     bool find132pattern(vector
& nums) { 4 int len = nums.size(); 5 int s3 = INT_MIN; 6 stack
st; 7 for (int i = len - 1; i >= 0; i--) { 8 if (nums[i] < s3) return true; 9 else {10 while (!st.empty() && nums[i] > st.top()) {11 s3 = st.top();12 st.pop();13 }14 }15 st.push(nums[i]);16 }17 return false;18 }19 };

 

转载于:https://www.cnblogs.com/leo-lzj/p/9923975.html

你可能感兴趣的文章
【Beta】Daily Scrum
查看>>
bzoj 1832 LCA
查看>>
Codeforces Round #285 (Div. 1) B - Misha and Permutations Summation 康拓展开+平衡树
查看>>
全局描述符表(GDT)——《x86汇编语言:从实模式到保护模式》读书笔记09
查看>>
webapp环境搭建(一)
查看>>
索引:如何让主键不自动创建聚集索引???
查看>>
配置无线网络的时候会提示“Enter Password for Default Keyring to Unlock”
查看>>
大端与小端存储模式详解
查看>>
wmpnetwk.exe怎么禁启动
查看>>
DirectX Sample-Blobs实现原理
查看>>
CountDownLatch浅析
查看>>
redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比
查看>>
c基础回顾
查看>>
knh
查看>>
HUNT:一款可提升漏洞扫描能力的BurpSuite漏洞扫描插件
查看>>
Vue Cli安装以及使用
查看>>
windows下面安装Python和pip终极教程
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
JavaScript高级程序设计(四): 关键字With的使用
查看>>