博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指_栈的压入弹出序列
阅读量:4073 次
发布时间:2019-05-25

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

题目描述

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

分析

首先定义一个栈,从压栈序列和弹出序列首元素往后遍历,如果栈是空的就把压栈序列当前元素入栈,或者栈非空但是栈顶元素不等于弹出序列当前元素,就把压栈序列当前元素入栈。如果当前栈顶元素等于出栈序列中当前元素,就弹栈顶元素并将弹出序列向后移一位。第一个循环的结束条件是压栈序列便利结束。此时依次比较栈顶元素和出栈序列,一旦出现不相等就返回false,如果全部匹配,出栈序列便利结束就返回true.

import java.util.ArrayList;import java.util.Stack;public class Solution {    public boolean IsPopOrder(int [] pushA,int [] popA) {      Stack
stack = new Stack
(); int push=0, pop=0; while(push

 

转载地址:http://zifni.baihongyu.com/

你可能感兴趣的文章
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
《软件体系结构》 第九章 软件体系结构评估
查看>>
《软件体系结构》 第十章 软件产品线体系结构
查看>>
《软件过程管理》 第六章 软件过程的项目管理
查看>>
《软件过程管理》 第九章 软件过程的评估和改进
查看>>
分治法 动态规划法 贪心法 回溯法 小结
查看>>