zoukankan      html  css  js  c++  java
  • 023 判断出栈顺序是否正确

    1.题目

      输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。

      假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。

    2.分析

      建立一个栈,按照压栈序列依次进行入栈操作,按出栈序列的顺序依次弹出数字。

      在出栈时,若下一个要出栈的数字与栈顶数字相同则弹出。如果压栈序列中的所有数字都入栈后没有完全出栈成功则代表两个序列不匹配,返回false。

    3.程序

     1 package first;
     2 
     3 import java.util.Stack;
     4 
     5 public class StackPushPopOrder {
     6     public boolean isPopOrder(int [] pushA,int [] popA) {
     7         if(pushA==null || popA==null)
     8             return false;
     9         Stack<Integer> stack = new Stack<Integer>();
    10         //必须提前判断长度是否相等
    11         if(popA.length!=pushA.length || pushA.length==0)
    12             return false;
    13         int popIndex=0;
    14         for(int pushIndex=0; pushIndex<pushA.length; pushIndex++) {
    15             stack.push(pushA[pushIndex]);
    16             while(!stack.empty() &&stack.peek()==popA[popIndex]) {
    17                 stack.pop();
    18                 popIndex++;
    19             }
    20         }
    21         return stack.empty();
    22     }
    23 }
  • 相关阅读:
    Tensorflow io demo (待)
    tf.Dataset
    tf.estimator
    并发队列
    Callable的Future模式
    hadoop之HDFS介绍
    线程池
    并发工具类
    并发编程
    初学hadoop之hadoop集群搭建
  • 原文地址:https://www.cnblogs.com/juncaoit/p/10496586.html
Copyright © 2011-2022 走看看