#include <iostream>
#include <stack>
using namespace std;
bool IsPopOrder(const int* pPush, const int* pPop, int nLength);
int main()
{
int push[] = {1,2,3,4,5};
int pop[] = {4,3,5,1,2};
if(IsPopOrder(push, pop, 5)) {
cout << "Is Pop Order." << endl;
} else {
cout << "Is Not Pop Order." << endl;
}
return 0;
}
bool IsPopOrder(const int* pPush, const int* pPop, int nLength)
{
if(pPush==NULL || pPop==NULL || nLength<=0) {
return false;
}
stack<int> s;
int j = 0;
for(int i = 0; i < nLength; ++i) {
s.push(pPush[i]);
if(pPush[i] == pPop[j]) {
s.pop();
++j;
}
}
while(!s.empty()) {
int temp = s.top();
s.pop();
if(temp != pPop[j++]) {
return false;
}
}
return true;
}
剑指offer第二版 面试题31:栈的压入,弹出序列
最新推荐文章于 2021-08-11 15:44:52 发布