判断栈的出栈顺序合法性
时间:2022-05-04
本文章向大家介绍判断栈的出栈顺序合法性,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
栈的出栈顺序合法性是指给定一系列元素,如1 - N,按照从小到大的方式入栈,每个元素的出栈时机不定。题目给定一个出栈顺序,我们来判断这个出栈顺序有没有可能发生。
比如对[1,2,3,4,5,6,7,8,9]:
- [1,2,3,4,5,6,7,8,9]是一个合法出栈序列
- [9,8,7,6,5,4,3,2,1]也是一个合法序列
- [4,5,3,2,7,6,1,8,9]也是一个合法序列
- [3,4,5,1,2,9,8,7,6]就是一个非法序列
判断方法有两种,一种是对每一个值,其后所有小于它的值的数是一个降序排列。
另一种是模拟入栈和出栈,对出栈序列中每一个数值,如果它当前已经在栈顶,则出栈;如果不在,那么从入栈序列中取出下一个放入栈中;如果需要入栈时入栈序列已空,则这就是一个非法序列。
代码如下:
public static boolean stackOrder(int[] nums){
int[] origin=new int[]{1,2,3,4,5,6,7,8,9};
//假定出栈序列也是1-9的数列
Deque<Integer> q=new ArrayDeque<>();
int index=0,i=0;
for (i=0;i<nums.length;){
if(!q.isEmpty()&& nums[i]==q.getLast()){
q.pollLast();
i++;
}
else {
if(index<9) {
q.addLast(origin[index++]);
}
else break;
}
}
return i==nums.length?true:false;
}
- springboot scheduled并发配置
- RabbitMQ高可用集群配置
- zookeeper curator处理会话过期session expired
- redis事务
- 数据库表反向生成(一) MyBatis-generator与IDEA的集成
- 数据库表反向生成(二) Django ORM inspectdb
- RabbitMQ与AMQP协议
- 大数据算法设计模式(2) - 左外链接(leftOuterJoin) spark实现
- hs_err_pid
- django celery的分布式异步之路(二) 高并发
- django celery的分布式异步之路(一) 起步
- SpringMVC拦截器Interceptor
- 元宵快乐:看SQL大师们用SQL绘制的团圆
- Python Redis pipeline操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SocketFTP多线程处理
- 面经手册 · 第4篇《HashMap数据插入、查找、删除、遍历,源码分析》
- Xray配合awvs漏洞扫描
- 无聊的MISC题解
- MISC-convert | 旋转跳跃
- MISC-多彩
- Web-高明的黑客
- CVE-2017-7529 Nginx整数溢出漏洞分析
- 【Vulnhub】pegasus
- 2019-11-20-app专项测试【Android电量】Battery Historian耗电分析
- CVE-2017-7529 Nginx整数溢出漏洞分析2
- Redis find hot key 牛X!
- Python加水印
- 自动化运维实践 | Ansible变量
- Python-SSH日志审计