22 栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压
入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的
一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
C++:
1 class Solution { 2 public: 3 bool IsPopOrder(vector<int> pushV,vector<int> popV) { 4 stack<int> s ; 5 int n = pushV.size() ; 6 for(int p1 = 0 , p2 = 0 ; p1 < n ; p1++){ 7 s.push(pushV[p1]) ; 8 while(p2 < n && s.top() == popV[p2]){ 9 s.pop() ; 10 p2++ ; 11 } 12 } 13 return s.empty() ; 14 } 15 };