zoukankan      html  css  js  c++  java
  • 栈的压入,弹出序列

    题目描述

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
     
     1 import java.util.ArrayList;
     2 
     3 public class Solution {
     4     public boolean IsPopOrder(int [] pushA,int [] popA) {
     5         ArrayList<Integer> s = new ArrayList<>();
     6         if (pushA.length == 0) return false;
     7         int i = 0, j = 0;
     8         while (i < pushA.length) {
     9             if (s.size() == 0 || s.get(s.size() - 1) != popA[j]) {
    10                 s.add(pushA[i++]);
    11                 
    12             } else {
    13                 j++;
    14                 s.remove(s.size() - 1);
    15             }
    16         }
    17         while(s.size() > 0 && s.get(s.size() - 1) == popA[j]) {
    18             s.remove(s.size() - 1);
    19             j++;
    20         }
    21         
    22         if (j == popA.length){
    23             return true;
    24         } else {
    25             return false;
    26         }
    27         
    28     }
    29 }
  • 相关阅读:
    SDOI2017 树点染色
    ZROI week1
    ZROI week3
    BZOJ 4545
    ZROI week2
    组合数问题
    JSOI2016 独特的树叶
    TJOI2015 组合数学
    Beginning Storyboards in iOS 5 Part 2
    孕妇不能吃的东东
  • 原文地址:https://www.cnblogs.com/hyxsolitude/p/12336450.html
Copyright © 2011-2022 走看看