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;
        }
    

      

  • 相关阅读:
    KMP
    图论知识,博客
    POJ 2318/2398 叉积性质
    CF821 E. Okabe and El Psy Kongroo 矩阵快速幂
    CF821 D. Okabe and City 图 最短路
    CF821 C. Okabe and Boxes 栈模拟
    CF821 A. Okabe and Future Gadget Laboratory 水
    Atcoder arc077 D
    Atcoder #017 agc017 D.Game on Tree 树上NIM 博弈
    Atcoder #017 agc017 B.Moderate Differences 思维
  • 原文地址:https://www.cnblogs.com/toov5/p/7658299.html
Copyright © 2011-2022 走看看