1. 题目

给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。

示例 1:
输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
输出:true
解释:我们可以按以下顺序执行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1示例 2:
输入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
输出:false
解释:1 不能在 2 之前弹出。提示:
0 <= pushed.length == popped.length <= 1000
0 <= pushed[i], popped[i] < 1000
pushed 是 popped 的排列。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/validate-stack-sequences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

《剑指Offer》同题:面试题31. 栈的压入、弹出序列

2. 解题

  • 使用栈模拟即可
class Solution {public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {int i = 0, j = 0;stack<int> stk;for( ; i < pushed.size(); ++i){stk.push(pushed[i]);while(!stk.empty() && stk.top() == popped[j]){stk.pop();j++;}}return (i == pushed.size() && j == pushed.size());}
};

class Solution {public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {int i = 0, j = 0;while(i < pushed.size()){if(pushed[i] == popped[j]){j++;pushed.erase(pushed.begin()+i);if(i != 0)i--;}else if(i != pushed.size()-1)//不相等,且不在最后一个i++;else//不相等,且在最后一个return false;}return true;}
};

LeetCode 946. 验证栈序列(栈)相关推荐

  1. Leetcode 946.验证栈序列

    Time: 20190906 Type: Medium 题目描述 给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返 ...

  2. LeetCode 255. 验证前序遍历序列二叉搜索树(单调栈)*

    文章目录 1. 题目 2. 解题 2.1 递归超时解 2.2 单调栈 1. 题目 给定一个整数数组,你需要验证它是否是一个二叉搜索树正确的先序遍历序列. 你可以假定该序列中的数都是不相同的. 参考以下 ...

  3. 946. 验证栈序列

    2020-05-15 1.题目描述 验证栈序列 2.题解 这个题目我本科的一位老师在给我们上算法课的时候讲过,他说关键是要明白我们什么时候需要入栈,什么 时候需要出栈,题目是要返回pushed数组能不 ...

  4. 青铜三人行之验证栈序列

    先说一个消息,为了方便互相交流学习,青铜三人行建了个微信群,感兴趣的伙伴可以扫码加下面的小助手抱你入群哦! 青铜三人行--每周一题@验证栈序列 视频讲解 力扣题目 验证栈序列 给定 pushed 和 ...

  5. 栈——验证栈序列(洛谷 P4387)

    题目选自洛谷P4387 是一道栈的题,能够帮助理解栈的更深层次. 题目大意就是判断序列是否可能是对应序列的出栈序列. 如何判断是不是合理的出栈序列呢? 对于序列a 我们依次和序列b来比较,如果不相同, ...

  6. P4387 【深基15.习9】验证栈序列

    #include<iostream> #include<stack>//不要忘记头文件 using namespace std; stack<int>k; int ...

  7. leetcode刷题集:栈与队列

    文章目录 01 用两个栈模拟一个队列 02 包含min函数的栈 03 栈的压入.弹出序列 队列的最大值 01 用两个栈模拟一个队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appen ...

  8. LeetCode946-验证栈序列

    问题:验证栈序列 给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true:否则,返回 false . 示例 ...

  9. 【代码随想录】【LeetCode】自学笔记07 - 栈和队列

    总结 基础补牢:[https://blog.csdn.net/tham_/article/details/44733101] 根据[http://c.biancheng.net/view/3354.h ...

最新文章

  1. 求n个数中第k大的数_互联网高频面试题目:「回溯算法」求组合总和
  2. (干货)css常用技巧
  3. [转]史上最全最强SpringMVC详细示例实战教程
  4. 阿里面试回答的认真总结
  5. c语言min函数_C语言探索之旅 | 第一部分第十课:第一个C语言小游戏
  6. DJ Mix Pads 2 - Remix Version Mac - DJ混音音乐制作板
  7. webservice和webserver区别
  8. c语言烟花表白程序代码,C语言实战之浪漫烟花表白程序代码
  9. 宽带网速如何测试软件,怎样测试网速 多种测试网速方法【推荐】
  10. linux下go语言代理
  11. 常见的网站功能需求及解决方案
  12. Canvas学习:绘制箭头
  13. Android Audio 音频路由
  14. 计算机主板电杆,嵌入式主板的常见故障解决办法
  15. Mahalanobis距离 Vs. 欧氏距离
  16. C:\KEIL\C51\intrins.h包含不正确的路径。Keil 头文件路径错误
  17. HMI(人机界面)在ADAS开发中的定位
  18. 服务器RAID5 18T 磁盘挂载
  19. 29个习惯让你的拖延症一去不复返
  20. java简易画图程序代码_java_简易画图板

热门文章

  1. C++远航之封装篇——类外定义和::
  2. 谈谈JAVA中的安全发布
  3. linux下安装jdk_mysql_tomcat_redis
  4. JS高级——变量提升
  5. Linux CentOS7.0 (01)在Vmvare Workstation上 安装配置
  6. ApplicationContext容器的设计原理
  7. textract安装使用
  8. js在类的方法中访问自己的属性
  9. mysql 8.0 一条insert语句的具体执行流程分析(一)
  10. 为什么不能同时用const和static修饰成员函数?