C++常规思路 借用栈结构模拟一遍
栈的压入、弹出序列
http://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106
脑子怎么思考这里就怎么写 按照所给的入栈序列操作遍历入栈 如遇到栈顶的元素和出栈序列的当前元素相等时 则弹出栈顶元素且出栈序列的当前位置往后移动 入栈序列遍历完毕 如果栈为空且出栈序列也遍历完毕 则是该压栈序列的弹出序列,其他情况皆不是。
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
stack<int>s;
int pos=0;
for(int i=0;i<pushV.size();i++)
{
s.push(pushV[i]);
while(pos<popV.size()&&s.top()==popV[pos])
{
s.pop();
pos++;
}
}
return (pos==popV.size()&&s.empty())?true:false;
}
};