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 }
  • 相关阅读:
    怎么使用ZYNQ PL的GPIO外设
    找不到串口的问题
    找不到串口的问题
    Enable GPOI on EMIO Interface的XPS14.4中显示为0的问题
    ZEDBOARD移植UCOS II 教程
    Nodejs中的EventEmitter
    JSinArray检查数组中是否存在某个值
    vim split
    NoSQL数据库:Redis适用场景及产品定位
    vim学习笔记
  • 原文地址:https://www.cnblogs.com/juncaoit/p/10496586.html
Copyright © 2011-2022 走看看