• 剑指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;
        }
    

      

  • 相关阅读:
    NLP(五)
    pyinstaller+wxpython+selinum
    C++ 动态库和静态库
    谷粒商城(三) 部署
    Centos使用KVM创建虚拟机
    C++指针
    C++异常处理
    C++流类库与输入/输出
    C++泛型程序设计及STL的结构
    selenium java maven testNg环境搭建
  • 原文地址:https://www.cnblogs.com/toov5/p/7658299.html
Copyright © 2020-2023  润新知