面试题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:写代码时对于循环终止条件没有很快理清。

posted @ 2015-07-03 14:40  Rosanne  阅读(172)  评论(0编辑  收藏  举报