栈的压入和弹出

栈的压入、弹出序列

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

/*
模拟出栈入栈
用一个栈s保存入栈序列,
当找到出栈的元素后出栈,符合出栈序列就出栈,不符合继续入栈。
直到入栈序列全部遍历完,s中是否还有元素
*/

class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        if(pushV.size()!=popV.size())return false;
        int i=0,j=0;
        stack<int> s;//s保存入栈序列
        while(i<pushV.size()){//当入栈序列全部遍历完结束
            if(pushV[i]!=popV[j]){//把出栈的元素前的所有值入栈
                s.push(pushV[i]);++i;//记录入栈序列访问位置
            }else{
                ++i;++j;//入栈,出栈访问位置后移,代表已经入栈出栈。
                while(!s.empty()&&s.top()==popV[j]){//判断已经入栈的元素是否符合出栈序列,继续出栈
                s.pop();++j;//否则继续入栈找到出栈元素。
                }
            }
        }
        if(s.empty())return true;//最后还有元素没有出栈返回false
        return false;
    }
};

全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务