剑指offer:栈的压入弹出序列

class Solution{
public:
bool  IsPopOrder(vector<int> pushV,vector<int> popV ){
    if(pushV.size()==0 ||popV.size()==0||pushV.size()!= popV.size()) return false;
    int len=pushV.size();
    int popIndex= 0;
    stack<int> st;
    for(int i=0;i<len;++i){
        st.push(pushV[i]);
        while(popIndex<len && !st.empty()&& st.top()==popV[popIndex])
        {
            st.pop();
            popIndex++;
        }
    }
    return st.empty();

}
};

首先定义两个数组,一个进栈一个弹出;当其中一个数组的大小为0或者两者长度不相等时,返回false;定义弹出数组的第一位为0,在定义一个辅助栈st,for循环,i小于数组长度,就压入数据,但是当popIndex<len && !st.empty()&& st.top()==popV[popIndex](这个是st栈的第一个元素等于弹出数组的元素)这些条件满足时,便弹出对应的元素,然后popIndex++,把栈和弹出数组的值都遍历遍,都对应时就是它的弹出序列;

#剑指offr#
全部评论
有时间空间复杂度的分析吗?
点赞 回复 分享
发布于 2023-03-28 11:48 山西

相关推荐

最喜欢秋天的火龙果很...:第一份工作一定要往大的去,工资低点没事。后面换工作会更好找,即使你去小公司,你也不可能不会换工作的。所以找大的去
点赞 评论 收藏
分享
AI牛可乐:哇,听起来你很激动呢!杭州灵枢维度科技听起来很厉害呀~你逃课去白马培训,老冯会同意吗?不过既然你这么感兴趣,肯定是有原因的吧! 对了,想了解更多关于这家公司或者求职相关的问题吗?可以点击我的头像私信我哦,我可以帮你更详细地分析一下!
你都用vibe codi...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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