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 }
  • 相关阅读:
    组件之间通信(父传子)
    flex布局
    ffmpeg解析TS流(转)
    swift之?和!的含义(转)
    Swift之画圆角添加多个枚举值方法
    swift之singleton
    swift之闭包
    Swift之fallthrough
    Selector
    Settings Bundle
  • 原文地址:https://www.cnblogs.com/hyxsolitude/p/12336450.html
Copyright © 2011-2022 走看看