当前位置: 首页 > news >正文

栈的压入弹出序列--牛客

一、题目

链接:栈的压入、弹出序列_牛客题霸_牛客网

描述

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

1. 0<=pushV.length == popV.length <=1000

2. -1000<=pushV[i]<=1000

3. pushV 的所有数字均不相同

二、题解

       本题需要了解栈的特性,栈的入栈出栈顺序不一定是全部入栈后再全部出栈,只要符合入栈出栈的规则即可。

       本题思路在于模拟入栈出栈的过程,栈空时进行入栈,入栈的栈顶元素与出栈元素相同时出栈不同时进行入栈,因此本题遍历入栈序列时在栈不为空时每入栈一个元素进行一次判断,如果与出栈序列相同就出栈否则持续入栈,在此过程需要注意访问的范围的问题以及栈空的问题。

   bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {stack<int> st;size_t n = pushV.size();//st.push(pushV[0]);size_t j = 0;size_t i = 0;while(i < n || j < n){if(st.empty()){if(i >= n){return false;}st.push(pushV[i]);i++;}if(st.top() == popV[j]){st.pop();j++;}else {if(i >= n){return false;}st.push(pushV[i]);i++;}}return st.empty();}

优化:每次都是先进行入栈直到相等需要出栈的时候,同时出栈时也需要注意栈为空的问题。出栈时可以连续的进行判断直到不需要出栈或者栈为空停止出栈。

    bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {stack<int> st;size_t i = 0;for(auto& e : pushV){st.push(e);while(!st.empty() && st.top() == popV[i]){st.pop();i++;}}return st.empty();}

 

http://www.dtcms.com/a/438933.html

相关文章:

  • 深圳设计网站南宁专业做网站
  • 同ip网站有什么危害不动产网站建设
  • 卫星通信天线极化角偏差对天线增益、交叉极化隔离度的影响
  • 好用的ppt模板网站公司网站建设费会计分录
  • Day92 基本情报技术者 单词表28 AI応用
  • 蛋糕店网站开发策划书公司网站优点
  • 网络卖东西的平台有哪些公司网站优化推广
  • 2025 AI 治理困局:假新闻围剿与隐私保护的双重博弈
  • 一个RCE命令执行靶场,包含基础命令、shell 特性、常见姿势、常见waf绕过
  • 受欢迎的福州网站建设wordpress后台模块
  • 李宏毅-Generative AI-第一课
  • 服务器安装完面板怎么做网站免费h5页面制作app
  • datawhale RAG技术全栈指南 202509 第5次作业
  • 怎么屏蔽ip段访问网站哪个做网站好
  • 手机电商网站 模板工程信息建程网
  • 找人做网站 自己购买服务器图片链接生成器软件
  • Day94 基本情报技术者 单词表30 ビッグデータ応用
  • 基于华为openEuler部署uptime-kuma监控面板
  • 数据库表设计通用规范:从基础命名到性能优化
  • The “How” (续) - 研发团队如何运转一次良好的迭代Sprint
  • 南通企业免费建站泗阳网页定制
  • 如何做中英文切换的双语网站东莞长安网站设计
  • 用html制作网站代码申请域名邮箱
  • 调和函数在球上的平均值性质与Poisson公式估计
  • Spring——声明式事务
  • 【Go 语言】揭秘 Go 语言的并发魔法:Goroutine 入门指南
  • 工商企业信息查询网站深圳宝安龙岗紧急寻人
  • 怎么上传视频到公司网站西安seo排名扣费
  • cms(网站内容管理系统)有哪些商业信息网站大全
  • Redis面试题及详细答案100道(86-100) --- 综合篇