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

栈的压入、弹出序列

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();
}

};

全部评论

相关推荐

矫健的闭门羹烹饪师又熬夜了:本人双非本,在鹅厂测开实习,你这个简历上写的这两个项目的技术栈都差不多,能够让面试官去延伸去问的八股除了redis就再没啥了,建议项目这边可以再改改,然后专业技能那块的话,感觉linux和测试工具可以分开写,毕竟不是干一件事的,反正没实习的基础上面试就深挖项目和八股,好好卷吧
点赞 评论 收藏
分享
05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在提需求:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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