zoukankan      html  css  js  c++  java
  • 栈的压人、弹出序列

    题目:

    输入两个整数序列

    第一个序列表示栈的压入顺序,第二个序列是弹出序列。

    判断第二个序列是否是该栈的弹出序列。

    假设所有的入栈的数字均不相等。

    解答:

     1 import java.util.*;
     2 
     3 public class Solution {
     4 
     5     public static void main(String[] args){
     6         Integer[] pushOrder = {1,2,3,4,5};
     7         Integer[] popOrder = {4,5,3,1,2};
     8 
     9         System.out.println(isRight(pushOrder, popOrder, 5));
    10     }
    11 
    12 
    13     private static boolean isRight(Integer[] pushOrder, Integer[] popOrder, int n) {
    14         Stack<Integer> stack = new Stack<Integer>();
    15 
    16         int count = 0;
    17         for(int i = 0; i < popOrder.length; i++) {
    18             if(!stack.isEmpty() && stack.peek() == popOrder[i]) {
    19                 stack.pop();
    20             } else {
    21 
    22                 if(count == pushOrder.length) {
    23                     return false;
    24                 } else {
    25 
    26                     do{
    27                         stack.push(pushOrder[count++]);
    28                     }while(stack.peek() != popOrder[i] && count != pushOrder.length)
    29 
    30                     if(stack.peek() == popOrder[i]) {
    31                         stack.pop();
    32                     } else {
    33                         return false;
    34                     }
    35                 }
    36             }
    37         }
    38 
    39         return true;
    40     }
    41 }
  • 相关阅读:
    day⑥:logging模块
    day⑥:shelve模块
    day⑥:xml模块
    day⑤:冒泡排序
    day⑤:模块
    day⑤:re深入
    day④:递归
    day④:迭代器
    day④:装饰器
    day③:函数式编程
  • 原文地址:https://www.cnblogs.com/wylwyl/p/10365388.html
Copyright © 2011-2022 走看看