栈的压入顺序和弹出顺序匹配问题

栈的压入、弹出序列

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

方法:利用辅助栈模拟压栈过程
遍历压栈vector,判断当前元素是否与弹出vector,不相等就压栈,继续向前便利压栈vector,但是弹出vector不动;
相等就说明当此有出栈弹出,压入栈和弹出vector均向前一步,同时对之前已经压入栈的元素进行判断是否有弹出;
最后判断辅助栈是否为空?是:否;

class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
stack<int> stk;
int i = 0, j = 0;
while(i < pushV.size()){
if(pushV[i] != popV[j]){</int></int></int>

            stk.push(pushV[i]);
            ++i;
        }
        else{
            ++j;
            ++i;
            while(!stk.empty() && stk.top() == popV[j]){
                stk.pop();
                ++j;
            }
        }
    }
    return stk.empty();
}

};

全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
11-29 11:21
门头沟学院 Java
总包48.5w,意想不到的价格
无情咸鱼王的秋招日记之薛定谔的Offer:R
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务