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

栈的压入、弹出序列

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

判断出栈序列是否合理问题,看了半天,栈的问题还是用另一个栈解决比较方便,原因就是性质是一样的。
在这个问题中,知道了入栈序列和出栈序列,那么我们用一个栈模拟入栈,用出栈序列约束其出栈元素。
(1):将入栈序列中元素压入栈
(2):判断栈顶元素是否等于出栈元素,等于即将其pop(),出栈序列加一,重复判断
(3):循环(1)(2),直到入栈序列所有元素被遍历
(4):判断栈是否为空,若为空,则意味着出栈序列合理的,否则,不合理
代码:

class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        stack<int> st;
        int l = pushV.size();
        int pushind = 0,popind = 0;

        while(pushind < l){
            st.push(pushV[pushind]);
            while(!st.empty() & st.top() == popV[popind]){
                st.pop();
                popind++;
            }
            pushind++;
            }
        if(st.empty())
            return true;
        else
            return false;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
下个早班:秒挂就是不缺人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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