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;
    }
};
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务