1. 程式人生 > >輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。

輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。

import java.util.Stack;

public class Solution {

public boolean IsPopOrder(int [] pushA,int [] popA) {

  if(pushA.length==0||popA.length==0)
  
      return false;
	  
    Stack <Integer> s=new Stack<Integer>();
	
    int j=0;
	
    for(int i=0;i<pushA.length;i++){
	
        s.push(pushA[i]);
		//模擬了進棧出棧的順序,就相當於有一個元素進棧就去判斷popA[j]下是否是出棧的順序,是就把該元素順序從s棧出棧
        while (j < popA.length && s.peek() == popA[j]) {
		
            s.pop();
			
            j++;
			
        }
		
    }
    return s.isEmpty() ? true:false;