zoukankan      html  css  js  c++  java
  • 剑指offer之 栈的压入、弹出序列

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

    package Problem22;
    
    import java.util.Stack;
    
    /*
     * 问题描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出序列。假设压入栈的所有数字均不相等。
     * 例如序列1/2/3/4/5是某栈的压栈序列,序列4/5/3/2/1是该压栈序列对应的一个弹出序列,但4/3/5/1/2就不可能是该压栈序列的弹出序列
     */
    
    public class IsPopOrder {
        /*
         * 输入两个整数序列,第一个序列表示压入顺序,判断第二个序列是否为弹出顺序.假设入栈所有数字均不相等
         */
        public boolean isPopOrder(int[] line1, int[] line2) {
            if (line1 == null || line2 == null)
                return false;
            int point1 = 0;
            Stack<Integer> stack = new Stack<Integer>();
            for (int i = 0; i < line2.length; i++) {
                if (!stack.isEmpty() && stack.peek() == line2[i]) {
                    stack.pop();
                } else {
                    if (point1 == line1.length)
                        return false;
                    else {
                        do
                            stack.push(line1[point1++]);
                        while (stack.peek() != line2[i] && point1 != line1.length);
                        if (stack.peek() == line2[i])
                            stack.pop();
                        else
                            return false;
                    }
                }
            }
            return true;
        }
    

      

  • 相关阅读:
    linux常见的编码转换
    linux sort的用法
    转--11个失败之后
    shell入门
    迟到
    必须要回答的问题
    【转载】个人开发者要掌握的时间规划建议
    Unity 碰撞检测 OnTriggerEnter 入门
    浅谈BUFF设计
    随机掉宝,对玩家来讲真的随机吗?
  • 原文地址:https://www.cnblogs.com/toov5/p/7658299.html
Copyright © 2011-2022 走看看