题解 | #栈的压入、弹出序列#

栈的压入、弹出序列

http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106

栈的压入和弹出

[思路]:用一个栈模拟入栈过程,分情况。(i表示pushv,j表示popv)

	当popv[j] != pushv[i],即当前数入栈v。继续判断下一个
    当pushv[i] == popv[j],当前入栈立即出栈,此时两种情况(1.前面入栈的出栈)(2.继续入栈)
class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        stack<int> v;
        int n = pushV.size();
        int i = 0,j = 0;
        while(i < n && j < n){
            if(pushV[i] != popV[j])
                v.push(pushV[i++]);
            else{
                ++i,++j;
                while(!v.empty() && v.top() == popV[j]){
                    v.pop();
                    ++j;
                }
            }
        }
        if(v.empty())return true;
        return false;
    }
};
全部评论

相关推荐

12-01 14:24
吉首大学 Java
点赞 评论 收藏
分享
求个付费实习岗位:这种就是吃满时代红利又没啥技术水平,只能靠压力学生彰显优越感的老登,别太在意了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务