链接:https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106
来源:牛客网

[编程题]栈的压入、弹出序列

热度指数:258526 时间限制:1秒 空间限制:32768K

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)

[思路]
借用一个辅助的栈,遍历压栈顺序,先将第一个元素,然后判断栈顶元素和当前出栈序列元素是否相同。若不同,继续入栈;直到栈顶元素和当前出栈序列元素相同,出栈,出栈序列后移一位。最后,若辅助栈为空,说明是弹出序列

import java.util.ArrayList;
import java.util.Stack;public class Solution {public boolean IsPopOrder(int [] pushA,int [] popA) {if(pushA.length==0||popA.length==0)return false;Stack<Integer> sk=new Stack<>();int popIndex=0;//用于标识弹出序列的位置for(int i=0;i<pushA.length;i++){sk.push(pushA[i]);//如果栈不为空,且栈顶元素等于弹出序列元素while(!sk.empty()&&sk.peek()==popA[popIndex]){sk.pop();popIndex++;//弹出序列后移}}return sk.empty();}public static void main(String[] args) {int [] pushA={1,2,3,4,5};//int [] popA={4,5,3,2,1};int [] popA={4,3,5,1,2};Solution s=new Solution();System.out.println(s.IsPopOrder(pushA, popA));}
}

牛客网 栈的压入、弹出序列相关推荐

  1. 【剑指offer-Java版】22栈的压入弹出序列

    栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...

  2. 数据结构与算法--举例分析法- 栈的压入弹出序列

    举例分析 与上两篇问中画图方法一样,我们可以用举例模拟的方法思考分析复杂问题.当一眼不能看出问题的规律的时候,我们可以用几个具体的例子来模拟一下问题的过程.这样就和我们在程序出现问题时候的debug一 ...

  3. 剑指offer-21.栈的压入弹出序列

    1.题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

  4. python 栈的压入弹出序列

    | 栈的压入和弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序, 请判断第二个序列是否为该栈的弹出顺序. 假设压入栈的所有数字均不相等. 例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序 ...

  5. 牛客NC272 栈的压入、弹出序列

    描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  6. 剑指offer 31.栈的、压入弹出序列

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是 ...

  7. 数据库SQL实战(牛客网):查找入职时间倒数第三晚的员工所有信息

    题目描述 查找入职员工时间排名倒数第三的员工所有信息 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date N ...

  8. 剑指Offer(Java实现)栈的压入、弹出序列

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 ...

  9. 剑指Offer--022-栈的压入、弹出序列

    链接 牛客OJ:栈的压入.弹出序列 九度OJ:http://ac.jobdu.com/problem.php?pid=1366 GitHub代码: 022-栈的压入弹出序列 CSDN题解:剑指Offe ...

最新文章

  1. App.config的典型应用
  2. mxnet加载预训练
  3. C++中的hash_map和map的区别
  4. OpenGL在frag着色器中模拟手电筒效果
  5. 自研开源框架 Midway Serverless ,让前端提效 50% 背后的故事
  6. react dispatch_React纯Hooks状态管理探索
  7. 基于 Spring Cloud 完整的微服务架构实战
  8. java开发cms视频教程下载地址_Java + MySQL 开发CMS系统实例教程
  9. JavaScript提高:006:ASP.NET使用easyUI TABS标签updatepanel
  10. 5个界面效果很炫的JavaScript UI框架
  11. npm下载地址的查询与切换
  12. 超声前置放大器原理是什么意思,前置放大器和功放区别
  13. Qt获取当前控件所在窗口的位置(坐标)
  14. 白度云下载到存储卡的视频看不了_苹果手机从百度网盘下载的视频如何保存到相册,还有不知道的吗?...
  15. 空山新雨后 [Unreal Engine 超写实渲染]
  16. [leetcode 913] 猫和老鼠(博弈、dp)
  17. python打字测试源码,在线打字
  18. CDbCriteria CArrayDataProvider zii.widgets.grid (2)
  19. 嵌入式软件工程师笔试面试指南-Linux驱动
  20. python 编写一个局域网文件传输的程序

热门文章

  1. 案例十:输入一批整数,输出其中的最大值和最小值,输入数字0时结束循环。...
  2. eval 与 Function
  3. redhat linux 5.6安装图解
  4. MyEclipse解决Launching xx on MyEclipse Tomcat has encountered a problem
  5. Ado.net 创建DataTable
  6. 助你打造纯键盘流系统——Launchy
  7. WDS系列--Windows Deployment Services概述篇
  8. mysql delete返回值_Mybatis执行sql(insert、update、delete)返回值问题
  9. 如何成为python 数据分析师_如何七周成为数据分析师20:了解和掌握Python的函数...
  10. 将数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔