LeetCode946-验证栈序列
问题:验证栈序列
给定 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
的排列。
链接:https://leetcode-cn.com/contest/weekly-contest-112/problems/validate-stack-sequences/
分析:
给出push顺序,判断给出的pop顺序是否合理,那么只需要用stack存储数据,依次push数据,然后判断栈顶是否可以pop即可,最终看stack是否为空(pushed.length==popped.length)。
流程:
push一个数字,然后尽可能的pop,直到不能pop为止,然后push下一个数字,直到push完所有。
AC Code:
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {bool ret = false;stack<int> tmpstack;int popindex = 0;for (int i = 0; i < pushed.size(); i++){tmpstack.push(pushed[i]);while (tmpstack.empty()==false && tmpstack.top() == popped[popindex]){popindex++;tmpstack.pop();}}if (tmpstack.empty() == true){ret = true;}return ret;}
};
其他:
1.第一code:
typedef long long ll; typedef vector<int> VI; typedef pair<int,int> PII;#define REP(i,s,t) for(int i=(s);i<(t);i++) #define FILL(x,v) memset(x,v,sizeof(x))const int INF = (int)1E9; #define MAXN 100005class Solution { public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {reverse(popped.begin(), popped.end());VI stk;REP(i,0,pushed.size()) {stk.push_back(pushed[i]);while (stk.size() && popped.size() && stk.back() == popped.back()) {stk.pop_back();popped.pop_back();}}if (popped.size()) return false;return true;} };
2.对数据进行操作的时候,一定要防止越界,比如stack获取top数据首先要判断是否为空,数组下标判断是否是在合理范围。
转载于:https://www.cnblogs.com/youdias/p/10015934.html
LeetCode946-验证栈序列相关推荐
- 946. 验证栈序列
2020-05-15 1.题目描述 验证栈序列 2.题解 这个题目我本科的一位老师在给我们上算法课的时候讲过,他说关键是要明白我们什么时候需要入栈,什么 时候需要出栈,题目是要返回pushed数组能不 ...
- 青铜三人行之验证栈序列
先说一个消息,为了方便互相交流学习,青铜三人行建了个微信群,感兴趣的伙伴可以扫码加下面的小助手抱你入群哦! 青铜三人行--每周一题@验证栈序列 视频讲解 力扣题目 验证栈序列 给定 pushed 和 ...
- 栈——验证栈序列(洛谷 P4387)
题目选自洛谷P4387 是一道栈的题,能够帮助理解栈的更深层次. 题目大意就是判断序列是否可能是对应序列的出栈序列. 如何判断是不是合理的出栈序列呢? 对于序列a 我们依次和序列b来比较,如果不相同, ...
- Leetcode 946.验证栈序列
Time: 20190906 Type: Medium 题目描述 给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返 ...
- P4387 【深基15.习9】验证栈序列
#include<iostream> #include<stack>//不要忘记头文件 using namespace std; stack<int>k; int ...
- LeetCode 946. 验证栈序列(栈)
1. 题目 给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true:否则,返回 f ...
- 946. Validate Stack Sequences验证栈序列
网址:https://leetcode.com/problems/validate-stack-sequences/ 参考:https://leetcode.com/problems/validate ...
- 给定入栈序列,判断一个串是否为出栈序列
剑指offer22:给定入栈序列,判断一个串是否为出栈序列 public static boolean isOutStackSequence(int[] Spush, int[] Spop) {if ...
- 栈 - 关于出栈序列,判断合法的出栈序列
文章目录 1 引例 2 做题方法 3 原因 3.1 选项D(4 3 1 2)的模拟 1 引例 (例)设栈的入栈序列是 1 2 3 4,则下列不可能是其出栈序列的是( ). A. 1 2 4 3 B. ...
最新文章
- 【剑道】用语中日对照
- 北京AI产业联盟来了!百度牵头,小米美团滴滴旷视纷纷入会
- hive数据仓库建设
- (35)23种设计模式研究之六【命令模式】
- 相对完善的Java通过JDBC操纵mysql的例子
- css3文字一行或多行展示,多余文字省略号(学习)超出隐藏
- 分布式系统架构的基本原则和实践
- seata分布式事务原理_又见分布式事务之Seata
- c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...
- C#,入门教程——一个优秀程序员的修炼之道
- 怎么删掉计算机云u盘,win10系统删除360云u盘图标的操作方法
- filter 无效不起作用
- 【寒江雪】Go实现单例模式
- IDEA搭建Go语言开发环境
- python ip地址处理_Python学习笔记-IP地址处理模块Ipy
- Java基础篇之利用IO流给文件加密、解密
- android视频壁纸源码,Android视频壁纸的实现
- androbench跑分性能排查
- WinHttp.WinHttpRequest.5.1
- 8个超好用的免费工具/软件/网站
热门文章
- 动态规划求解所有字符的组合数
- java限制金额控制_JavaMail 限额管理
- 服务器安装win7系统蓝屏,安装win7系统出现蓝屏| win7安装过程中蓝屏|安装win7系统时蓝屏...
- 计算机组成原理的实验节拍,一种计算机组成原理的实验装置
- python中math模块函数_python中math模块函数
- c语言将一个实型变量f=55.5678,《C语言程序设计》第2章2 常量和变量
- dao层和service层和control_最受欢迎Java数据库访问框架(DAO层)
- 清华计算机系山东分数,清华大学山东录取分数线|2021清华大学山东分数线|2021年清华大学山东高考分数线|2021年清华大学山东招生计划录取人数...
- mac win10 mysql_Mac装双系统Win10,安装MySQL遇到的问题
- php验证邮箱的通用函数,PHP函数:PHP的通用检测函数总结