面试题22:栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,判断第二个序列表示是否为该栈的弹出顺序。
1 bool isPopOrder (vector<int>&push, vector<int>&pop) 2 { 3 int n = push.size(); 4 if ( n == 0 || n!=pop.size() ) 5 return false; 6 stack<int>s; 7 s.push(push[0]); 8 int indexPush = 1, indexPop = 0; 9 while ( indexPop < n ) 10 { 11 if (!s.empty() && s.top() == pop[indexPop]) 12 { 13 s.pop(); 14 indexPop++; 15 } 16 else 17 { 18 if (indexPush == n) 19 return false; 20 s.push(push[indexPush++]); 21 } 22 } 23 return true; 24 }
PS:写代码时对于循环终止条件没有很快理清。