(24) 不可能的出栈顺序

一、问题描述

给定两个数组,一个进栈顺序,一个出栈顺序。判定出栈数组的出栈顺序是不是有可能的。

二、Code

 1 package algorithm;
 2 
 3 import java.util.ArrayDeque;
 4 import java.util.Deque;
 5 
 6 /**
 7  * Created by adrian.wu on 2019/5/30.
 8  */
 9 public class StackPopOrderJudge {
10     /*
11     思路:
12     1、整体思路用一个辅助栈还原入栈元素的顺序,并比较两者是否一致
13     2、如果第一个出栈元素并非最后一个入栈元素,则这个出战元素之前的元素不可能先于它出栈,因此把这个元素即之前的元素都压入栈
14     3、上述步骤之后,如果出栈元素并非入栈栈顶元素,则其是先pop出去了,因此直接压人辅助栈
15     4、重复上述步骤,并比较辅助栈和压入栈的元素,遇到相同则pop
16     5、观察最后入栈元素和辅助栈是否都为空,为空则正确,不为空则False
17      */
18 
19     public static boolean isPopOrder(int[] in, int[] out) {
20         int n = out.length;
21         int nextPop = 0, nextPush = 0;
22         Deque<Integer> deque = new ArrayDeque<>();
23 
24 
25         while (nextPop != n) {
26             while (deque.isEmpty() || deque.peek() != out[nextPop]) {
27                 if (nextPush == n) break;
28                 deque.push(in[nextPush++]);
29             }
30 
31             if (!deque.isEmpty() && deque.peek() != out[nextPop++]) break;
32             deque.pop();
33         }
34         return nextPop == n && deque.isEmpty();
35     }
36 }

 

转载于:https://www.cnblogs.com/ylxn/p/10954150.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《魔兽世界》的魅力究竟在哪儿?

写在前面&#xff1a;《魔兽世界》&#xff08;World of Warcraft&#xff0c;后面简称WOW&#xff09;&#xff0c;是由暴雪开发的一款大型角色扮演网络游戏&#xff0c;曾经付费的正式用户一度超过1150万人&#xff0c;覆盖244个国家和地区&#xff0c;是曾经的“世界第一网游…

Service Mesh所应对的8项挑战

2019独角兽企业重金招聘Python工程师标准>>> Lori Macvittie 微服务架构是把双刃剑&#xff0c;我们享受它带来的开发速度&#xff08;development velocity&#xff09;&#xff0c;却也不得不面对服务间通讯带来的复杂性问题。 目前大多数扩展容器化微服务的架构多…

什么叫内部银团_什么是紫钛晶?紫钛晶是不是天然水晶?

都说紫钛晶是紫水晶与钛晶的结合&#xff0c;听上去好像这种水晶不是天然的&#xff0c;像是人工合成的&#xff0c;事实上并非如此&#xff0c;紫钛晶也是天然形成的水晶&#xff0c;由于内部的包裹体是金色的&#xff0c;因此被称为紫钛晶。和菩心晶舍家的晶舞倾城一起了解紫…

如何使用Squid服务来构建=》传统和透明代理服务器,通俗易懂!

1、缓存代理概述&#xff1a; 作为应用层的代理服务软件&#xff0c;Squid主要提供缓存加速和应用层过滤控制的功能 2、代理的工作机制&#xff1a; &#xff08;1&#xff09;当客户机通过代理来请求web页面时&#xff0c;指定的代理服务器会先检查自己的缓存&#xff0c;若缓…

Bootstrap开发框架视频整理

最近到客户处进行实地培训&#xff0c;整理了很多培训的材料&#xff0c;现将它们录制相关主题的视频&#xff0c;作为我的Bootstrap开发框架的知识补充&#xff0c;希望给感兴趣的朋友进行了解。培训内容主要包括基础框架部分、MVC框架部分、Bootstrap框架部分、Bootstrap重要…

【c基础】入门语法

%d:占位符 表示要输出一个整形数。 %f:为float 浮点数 %lf:为double型 双精度浮点数 \n:换行 const:定义一个常量,一旦被初始化就不能修改&#xff0c;只读的变量&#xff08;read-only variable&#xff09;。 整数运算 的结果是整数 如果有小数就抛弃没有考虑四舍五入。 一&a…

day22 Java学习 IO流(序列流)

IO流&#xff08;序列流&#xff09; 序列流&#xff1a; * 可以把多个字节输入流整合成一个&#xff0c;从序列流中读取数据时&#xff0c;将从被整合的第一个流开始读&#xff0c;读完一个之后继续读第二个。 整合方式&#xff1a; * Seq uenceInputStream ( InputStream &am…

Unraveling the JPEG file

(文章还剩实践部分没写&#xff0c;答辩过后补上...) JPEG文件在当下数字化生活中是无处不在的&#xff0c;但是在熟悉的JPEG面纱背后&#xff0c;隐藏着一些算法&#xff0c;它们去除了人类眼中无法察觉到的细节。这产生了最高的视觉质量与最小的文件大小。让我们来看看这一算…

mysql interval 3 day_Mysql之INTERVAL与DATE_SUB与EXTRACT函数的使用

1. INTERVALINTERVAL代表的是时间间隔MySQL中的时间间隔类型有如下几种:1.1 利用INTERVAL做时间的加减法示例&#xff1a;加法:SQL>SELECT DATE 2018-11-01 INTERVAL 10 11 DAY_HOUR;结果:2018-11-11 11:00:00减法&#xff1a;SQL> select date 2018-11-11 11:00:00 -INT…

0727日志

为什么80%的码农都做不了架构师&#xff1f;>>> c端线上地址 http://x.diandanme.com/fe/?d183#/ 什么时候来需求&#xff0c;我做好准备了吗&#xff1f; eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC94LmRpYW5kYW5tZS5jb21cL2FwaVwvd2VjaGF0XC…

Python基础学习总结__Day3

一、集合 1&#xff0e;特性&#xff1a;无序且天生去重&#xff0c;格式为{} 2&#xff0e;作用&#xff1a; &#xff08;1&#xff09;去重 &#xff08;2&#xff09;关系测试 3&#xff0e;可调用函数&#xff08;常见对列表操作&#xff09; &#xff08;1&#xff09;取…

day8网络编程,面向对象1

一.只是回顾 1.导入模块的顺序,首先从当前目录下找,再从环境变量里面找,使用"sys.path.insert(0,需要导入的环境变量)"加入需要导入文件的环境变量; 2.如果不同项目中有相同的文件,需要导入文件,需要将非当前项目中右键添加的环境变量取消,将当前的环境变量添加上去;…

ES语法及-IK分词器

{"query": {"query_string": {"default_field": "title",//全文搜索"query": "器大"}} } "id":1, "title":"Elasticsearch是一个基于Lucene的搜索服务器", "content":&q…

python多任务编程_python线程的多任务编程

多任务多任务介绍对于人来说&#xff0c;一边听歌&#xff0c;一边跳舞就是多任务。对于电脑&#xff0c;简单的说&#xff0c;同一时间执行多个程序处理数据叫做多任务多任务理解单核CPU单核cpu在处理多任务的时候是根据时间片轮转的方式进行的&#xff0c;比如执行QQ1us&…

简单分析Guava中RateLimiter中的令牌桶算法的实现

为什么80%的码农都做不了架构师&#xff1f;>>> 令牌桶算法是网络流量整形&#xff08;Traffic Shaping&#xff09;和速率限制&#xff08;Rate Limiting&#xff09;中最常使用的一种算法。典型情况下&#xff0c;令牌桶算法用来控制发送到网络上的数据的数目&am…

gcc oracle mysql_Linux下C语言访问Oracle数据库Demo

前提条件1. Linux环境已经存在&#xff0c;安装好了Oracle本demo 运行环境本地环境 RedHat LINUX AS 4 ,ORACLE 10G本地数据库sid orcl,ip:127.0.0.1,用户名:kingbi&#xff0c;密码&#xff1a;kingbi,表dsd_test. 显示表dsd_test 的所有记录.步骤&#xff1a;(1) 创建表 …

炼数成金数据分析课程---16、机器学习中的分类算法(交叉内容,后面要重点看)...

炼数成金数据分析课程---16、机器学习中的分类算法&#xff08;交叉内容&#xff0c;后面要重点看&#xff09; 一、总结 一句话总结&#xff1a; 大纲实例快速学习法 主要讲解常用分类算法(如Knn、决策树、贝叶斯分类器等)的原理及python代码实现 1、什么是分类&#xff1f; 分…

NFS配置详解

1、NFS服务介绍1.1 什么是NFS&#xff1f;NFS是Network File System的缩写。中文意思是网络文件系统。它的主要功能是通过网络&#xff08;一般是局域网&#xff09;让不同的主机系统之间可以共享文件或者目录。NFS客户端&#xff08;一般为应用服务器&#xff0c;例如web&…

idea用法

更新gradle的依赖后&#xff0c;刷新项目引入jar包的方法&#xff1a; view--Tool Buttons 在右侧 Gradle 点刷新 转载于:https://www.cnblogs.com/z360519549/p/10994897.html

免费下载!5本阿里技术好书,带你看更大的世界

共享、开源是互联网技术发展的重要精神。在过去&#xff0c;25000多万名阿里工程师&#xff0c;撰写了一系列精品技术丛书&#xff0c;从算法、研发到职业人生随笔&#xff0c;应有尽有。目前该系列丛书已全部开放下载&#xff0c;供技术人免费阅读。 今天小编整理了其中的五本…