您的位置:首页 > 职场人生

【剑指offer】4.3举例让抽象问题具体化——面试题22:栈的压入、弹出序列

2016-01-11 20:39 651 查看


//题目描述
//
//输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。
#include<vector>
#include<iostream>
#include<stack>
using namespace std;
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
stack<int>stk=stack<int>();
int n=pushV.size();
if(n==0)return false;
int k=0;
for(int i=0;i<n;i++){
stk.push(pushV[i]);
while(!stk.empty()&&stk.top()==popV[k]){
k++;
stk.pop();
}
}
return stk.empty();
}
};
int main(){
vector<int>pushV;
for(int i=1;i<=5;i++)
pushV.push_back(i);
vector<int>popV;
popV.push_back(4);
popV.push_back(5);
popV.push_back(3);
popV.push_back(2);
popV.push_back(1);
Solution test=Solution();
cout<<test.IsPopOrder(pushV,popV);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: