【c++刷题】——剑指offer21.栈的压入、弹出序列

2023-11-13

剑指offer21.栈的压入、弹出序列

题目链接:剑指offe21.栈的压入、和弹出序列

题目描述

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)

示例1

输入:

[1,2,3,4,5],[4,3,5,1,2]

复制返回值:

false

思路:

栈的特点就是后进都数据先弹出。

 4,5,3,2,1是先将1,2,3,4压入栈,然后再将4弹出,在把5压入栈,在弹出5,3,2,1,所以

4,5,3,2,1是1,2,3,4,5对应的弹出数据。

1.先创建一个栈stack,模拟实现栈的压入和弹出的状况(后进先出)

2.遍历一次pushV中的数据,将pushV中的数据插入到stack中,插入一个数据后就对stack中最顶端的数据与popV中指针指向的数据进行比较,如果相等,则删除stack中顶端的数据,popV指针再向后走一位,直到与stack顶端的数据不相等或者stack为空就停止比较,再将pushV中的数据继续插入到popV中。        
3.遍历完pushV数组后,判断stack是否为空,如果为空,则为true,不为空false。因为如果stack为空,则说明stack弹出顺序与pushV是相同的。

 

 

 代码:

class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        stack<int> st;
        int i=0,j=0;//i是pushV的指针,j是popV的指针
        while(i<pushV.size())//判断是否为遍历完pushV
        {
            st.push(pushV[i]);
            i++;
            //判断st是否为空,且顶端数据是否与popV指针指向的数据相等
            while(!st.empty()&&st.top()==popV[j])
            {
                st.pop();
                j++;
            }
        }

        if(!st.empty())//判断st数据知否为空
        {
            return false;
        }
        return true;
    }
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【c++刷题】——剑指offer21.栈的压入、弹出序列 的相关文章

随机推荐

  • HTML5 蔡徐坤打篮球游戏 NMSL❤️❤️❤️

    此文章来自实验楼用户dancebyte在实验楼的技术分享 希望大家喜欢 使用 es6 语法及原生 javascript 实现的蔡徐坤打篮球游戏 游戏有多种难度可选择 简单 普通 困难 极限以及非人类 非人类模式请勿轻易尝试 否则可能会疯掉
  • 查询性别的时候格式化

    SELECT CYD DEPT NAME T ID T CODE T NAME T JOB CASE WHEN T SEX 0 THEN 男 WHEN T SEX 1 THEN 女 ELSE X END AS SEX T BIRTH T P
  • 卷积神经网络(二)- 深度卷积网络:实例研究

    本次学习笔记主要记录学习深度学习时的各种记录 包括吴恩达老师视频学习 花书 作者能力有限 如有错误等 望联系修改 非常感谢 卷积神经网络 二 深度卷积网络 实例研究 一 为什么要进行实例研究 Why look at case studies
  • 在 VMware Workstation 虚拟机中创建共享文件夹的步骤〔图解〕

    本文以 VMware Workstation 7 1 4 385536 汉化版为例 讲解在虚拟机中创建 VMware 共享文件夹 vmware shared folders 的具体步骤与方法 一 安装 VMware Tools 启动好 Wi
  • yolov5识别cf火线敌人(FPS类的AI瞄准)详细教程一

    一 前言 因为自己的研究方向也是深度学习方向 而且平时闲的时候还喜欢玩会cf火线等枪战游戏 就想着找一个大模型做一个对游戏敌人的识别的功能 一切实现之后就想把自己的心得写出来 我打算分俩个教程分别细述整个学习以及操作的过程 教程一主要包括了
  • 【Python 逻辑题】甲、乙、丙、丁四人的血型各不相同

    问题 甲 乙 丙 丁四人的血型各不相同 甲说 我是A型 乙说 我是O型 丙说 我是AB型 丁说 我不是AB型 四个人中只有一个人的话是假的 解决方法 思路 四个人的血型肯定都在 A B O AB 范围内 所以用for循环让四个人轮流等于这四
  • Python的 numpy中 meshgrid 和 mgrid 的区别和使用

    一 meshgrid函数 meshgrid函数通常使用在数据的矢量化上 它适用于生成网格型数据 可以接受两个一维数组生成两个二维矩阵 对应两个数组中所有的 x y 对 示例展示 由上面的示例展示可以看出 meshgrid的作用是 根据传入的
  • 空时自适应处理用于机载雷达——机载阵列雷达信号环境(Matla代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 机载阵列雷达信号环境 2 2 空时处理基础知识 2 3 元素空间空时自适应处理 2
  • [TensorFlow2基础]对数据的训练和预测

    TensorFlow深度学习 前言 一 检测是否安装了tensorflow 二 导入csv文件 1 读入数据 2 数据绘图 三 模型的建立和训练 1 建立模型 2 进行训练 3 预测 总结 前言 本文介绍Tenserflow架构学习的基础内
  • unity3d-WebCamTexture类API详解

    WebCamTexture类 命名空间 UnityEngine 继承于 Texture Description 说明 WebCam Textures are textures onto which the live video input
  • js startsWith方法

    startsWith方法 用来判断字符串是否以固定数据开头 abc startsWith a true abc startsWith d false 该方法还有第二个参数 可以从字符串指定位置开始判断 默认为0 abcdefg starts
  • 【后端开发】将springboot项目部署到阿里云服务器

    步骤一 拿到一台阿里云的服务器 1 到达阿里云官网 2 有账号的可以直接登录 没有账号的自己注册一个 3 找到搜索框 搜索 云服务器 4 可以购买一台 新用户可以试用 也可以进行学生认证进行免费试用 我这里选择的是 新用户试用 5 选择自己
  • sqlite工具类(不完善只有基本功能)

    提示 sqlite最好单线程操作 多线程写会冲突 单这个工具我一般用于小的程序用 所以是一个连接在重复使用没有进行保活之类操作 新增了单例的读写连接持有 通过队列解决多线程sql执行问题 新增了读线程池 保存每个线程 maven
  • 微信视频不能连接到服务器,微信无法连接到服务器

    微信的使用现在已经是很普遍了 可以通过微信和好友进行更加丰富多彩的方式联系 并且软件也是不收费的 但是在使用的过程中难免会遇到这样或是那样的问题 比如说微信无法连接到服务器这种情况也是时有发生 那么是什么原因导致的呢 要如何来解决呢 下面就
  • Flutter列表组件(ListView,GrideView)

    Flutter列表组件 ListView介绍 ListView参数列表 基本列表 垂直列表 水平列表 动态列表 ListView builder遍历数据生成列表 GrideView组件 参数说明 GrideView builder遍历数据生
  • 多维时序

    多维时序 MATLAB实现GTO CNN LSTM人工大猩猩部队优化卷积长短期记忆神经网络多变量多步时间序列预测 目录 多维时序 MATLAB实现GTO CNN LSTM人工大猩猩部队优化卷积长短期记忆神经网络多变量多步时间序列预测 预测效
  • org.apache.catalina.connector.clientAbortException:java.io.IOException: 你的主机中的软件中止了一个已建立的连接

    开始好好的 突然前端查看图片就这个样子了 127 0 0 1 sent an invalid response 但是后端不报错 前端的网络包也正常 这个错误很奇怪之后手动try catch手动打印才会显示 解决方案 本来代码是这样的 改成下
  • 思维练习题

    逻辑思维训练500题 正文前序 思维训练让你更高 更强 前 言 第一章 假设法 第二章 计算法 第三章 排除法 第四章 分析法 第五章 观察法 一个真实的假设往往可以让事实呈现眼前 让真理浮出水面 一个人如果做什么事都可以让其思维以这些假设
  • 关于GPS、惯导、视觉里程计的几个定义

    1 首先写几个定义 惯性导航系统 Inertial Navigation System INS 全球定位卫星系统 Global Navigation Satellite System GNSS GNSS 包括全球定位系统 Global Po
  • 【c++刷题】——剑指offer21.栈的压入、弹出序列

    剑指offer21 栈的压入 弹出序列 题目链接 剑指offe21 栈的压入 和弹出序列 题目描述 输入两个整数序列 第一个序列表示栈的压入顺序 请判断第二个序列是否可能为该栈的弹出顺序 假设压入栈的所有数字均不相等 例如序列1 2 3 4