NC272 栈的压入、弹出序列

栈的压入、弹出序列

https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId=196&tqId=39723&rp=1&ru=/exam/oj&qru=/exam/oj&sourceUrl=%2Fexam%2Foj&difficulty=undefined&judgeStatus=undefined&tags=581&title=

已知入栈顺序求合法的出栈顺序

class Solution {
public:
    //已知入栈的顺序求合法的出栈的顺序
    bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
        //可以先创建一个栈
        stack<int>stack1;
        int j=0;
        //将第一个序列的元素压入栈中
        //每压一个元素入栈,就判断一下如果栈非空且等于第二个序列对应的元素,就出栈,j++
        for(int i=0;i<pushV.size();i++){
            stack1.push(pushV[i]);
            while(!stack1.empty()&&stack1.top()==popV[j]){
              j++;
              stack1.pop();
            }
        }
        //最后如果第二个序列的所有的元素都有对应的出栈顺序与之匹配,就表示第二个序列是合法的出栈顺序
        if(j==popV.size()){
            return true;
        }
        return false;
    }
};
全部评论

相关推荐

11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务