剑指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 山西

相关推荐

想顺利毕业的猕猴桃在看牛客:好几个月没面试了,腾讯留面评吗
点赞 评论 收藏
分享
01-02 00:50
三峡大学 Java
程序员牛肉:这简历一出手就离失业不远了。 作为一家公司来讲,我如果要招日常实习生,那我对实习生最基本的要求就是要能干活,毕竟你就待三四个月,谁会留心培养你? 那么除了院校之外,最重要的就是项目和实习了。没有实习的话项目就好好搞。 但是你说你这个项目吧:课程作业管理系统和TMS运输管理系统。这两个基本就和闹着玩差不多。 你作为一个想要应聘Java开发实习生的人,对后端的理解还仅仅停留在:“使用mapper和sql映射”,“使用SQL进行多表调用”,“基于MySQL简历表结构”,“基于Spring boot完成CURD操作”这种玩具上......... 找不到后端实习的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务