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

代码:

package offer;

import java.util.Stack;

public class ti31 {
    static boolean IsPopOrder(int push[],int pop[])
    {
        Stack<Integer> stack = new Stack<Integer>();
        int x = 0;
        int i = 0;
        while(x<=pop.length-1)
        {
            if(stack.empty()&&i<push.length)
            {
                stack.add(push[i]);
                i++;
            }
            while(!stack.empty()&&pop[x]==stack.peek())
            {
                stack.pop();
                x++;
            }
            if(!stack.empty()&&pop[x]!=stack.peek())
            {
                if(i<push.length)
                {
                    stack.add(push[i]);
                    i++;
                }
                else
                {
                    return false;
                }
            }
        }
        return true;
    }
    public static void main(String[] args)
    {
        int push[] = {1,2,3,4,5};
        int pop[] = {4,5,3,2,1};
        System.out.println(IsPopOrder(push,pop));
    }
}

【剑指offer】面试题31:栈的压入,弹出序列相关推荐

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

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

  2. 剑指offer面试题31. 栈的压入、弹出序列(链表)

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

  3. 剑指offer面试题[22]-栈的压入、弹出序列

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

  4. 剑指offer(21)栈的压入、弹出序列

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

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

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

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

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

  7. 剑指offer(21)栈的压入、探出序列

    链接:https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106 思路:借用一个辅助的栈,遍历压栈顺序,先将第 ...

  8. python 栈的压入弹出序列

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

  9. 剑指offer——面试题31:连续子数组的最大和

    剑指offer--面试题31:连续子数组的最大和 Solution1: 第一次做这道题.. 讲道理是这是标准的动态规划的题目,可是思路未完全想好. min_element(iterator, iter ...

  10. 剑指offer——面试题41:和为S的连续整数序列

    剑指offer--面试题41:和为S的连续整数序列 Solution1:我的答案 基本思路是根据等差数列的前n项和推导出首项与项数的关系,设首项为a1a1a_1,项数为kkk,和为S" ro ...

最新文章

  1. [CLR via C#]25. 线程基础
  2. mysql map 键值对获取_mysql map_get function,用于解析map结构数据,根据key返回相对应value...
  3. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(中)
  4. mysql数据迁移到sqlserver_一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE...
  5. 每天一个linux命令(10):more命令
  6. repeater 的编辑功能
  7. 翻译:包含列的索引:通往SQL Server索引级别5的阶梯
  8. Oracle表名、列名、约束名的长度限制
  9. STM32单片机(一).相关的开发工具软件
  10. FreeImage使用
  11. 从pdf简历中提取信息——BiLSTM-CRF
  12. 《代码大全》读书笔记
  13. 24小时之内完成优秀营销方案策划
  14. java-commen判断一个数据是否存在于列表中
  15. Kafka SSL 和 ACL 配置
  16. 动态规划——背包问题九解(01背包)
  17. LED阵列PCB灯板绘制
  18. 量化投资学习——股指期货理论价格说明
  19. C语言基础--编写风格1
  20. 乐高ev3搭建图纸大全_乐高拼装步骤图纸制作软件分享

热门文章

  1. LeetCode 1207. 独一无二的出现次数
  2. LeetCode 42. 接雨水(双指针、单调栈)
  3. db文件怎么修改_MongoDB最新4.2.7版本三分片集群修改IP实操演练
  4. Python中字符串格式化:%和format
  5. 别再龟速炼丹了!聊聊怎样科学提升训练效率
  6. 论文浅尝 - ACL2020 | 用于回答知识库中的多跳复杂问题的查询图生成方法
  7. 技术论坛 | CCF YOCSEF上海即将在 CNCC 举办“知识图谱遇见社交媒体”专题论坛
  8. 标签生成-基于标签的的推荐系统
  9. 对话中情绪识别,研究挑战、数据集和前沿方法
  10. 记录对String.format(Formatter().format())方法的总结