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

示例 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 的排列。

代码:

class Solution {

public boolean validateStackSequences(int[] pushed, int[] popped) {

if(pushed.length==0&&popped.length==0)

{

return true;

}

if(pushed.length!=popped.length)

{

return false;

}

Stack<Integer> stack = new Stack<Integer>();

int i=0,j=0;

while(i<pushed.length)

{

if(stack.isEmpty())

{

stack.push(pushed[i++]);

}

if(stack.peek()==popped[j])

{

stack.pop();

j++;

}

else

{

if(i>0&&popped[j]==pushed[i-1])

{

j++;

stack.pop();

}

else if(i<=pushed.length-1)

{

stack.push(pushed[i++]);

}

else

{

return false;

}

}

}

while(j<popped.length)

{

if(popped[j]==stack.peek())

{

j++;

stack.pop();

}

else{

return false;

}

}

return true;

}

}

【剑指offer】面试题31:栈的压入、弹出序列(Java)相关推荐

  1. 【剑指offer-Java版】22栈的压入弹出序列

    栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...

  2. 剑指offer面试题31. 栈的压入、弹出序列(链表)

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2 ...

  3. 剑指offer面试题[22]-栈的压入、弹出序列

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  4. 剑指offer(21)栈的压入、弹出序列

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

  5. 剑指offer-21.栈的压入弹出序列

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

  6. 数据结构与算法--举例分析法- 栈的压入弹出序列

    举例分析 与上两篇问中画图方法一样,我们可以用举例模拟的方法思考分析复杂问题.当一眼不能看出问题的规律的时候,我们可以用几个具体的例子来模拟一下问题的过程.这样就和我们在程序出现问题时候的debug一 ...

  7. 剑指offer(21)栈的压入、探出序列

    链接:https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106 思路:借用一个辅助的栈,遍历压栈顺序,先将第 ...

  8. python 栈的压入弹出序列

    | 栈的压入和弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序, 请判断第二个序列是否为该栈的弹出顺序. 假设压入栈的所有数字均不相等. 例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序 ...

  9. 剑指offer——面试题31:连续子数组的最大和

    剑指offer--面试题31:连续子数组的最大和 Solution1: 第一次做这道题.. 讲道理是这是标准的动态规划的题目,可是思路未完全想好. min_element(iterator, iter ...

  10. 剑指offer——面试题41:和为S的连续整数序列

    剑指offer--面试题41:和为S的连续整数序列 Solution1:我的答案 基本思路是根据等差数列的前n项和推导出首项与项数的关系,设首项为a1a1a_1,项数为kkk,和为S" ro ...

最新文章

  1. 13 岁上大学,19 岁南大读博!00 后天才少女研究「中国芯」
  2. 马云最新演讲:未来10年,人类将面临AI、IoT和区块链等三大技术巨大挑战!
  3. [20170728]oracle保留字.txt
  4. 2020 年 5 大 DevOps 趋势
  5. 人人都能看懂的循环神经网络RNN
  6. 数据结构 - 字符串 - 最长公共子序列 + 最长公共子字符串 - 动态规划
  7. Codrops 教程:基于 CSS3 的精美模态窗口效果
  8. 学会怎样使用Jsp 内置标签、jstl标签库及自定义标签
  9. nvl2可以套公式吗 oracle_包装设计也可以套公式?8个公式带你玩转包装创意表现形式...
  10. 相机姿态估计(五)--DLS
  11. spark MLlib机器学习教程
  12. 1. 架构到底是指什么? 容易混淆的概念
  13. 装Linux gpt还是mbr,装机、装系统必备:秒懂MBR和GPT分区表
  14. Format函数详解
  15. Codeforces Round 444 div2 D Ratings and Reality Shows (双指针)
  16. 《时代》杂志评出的100部最佳英语小说(含下载)
  17. 在html里怎么给表单加上边框,html如何给table表单加边框
  18. v-for on stateful component root element because it renders multiple elements
  19. 6313网址大全恶意修注册表问题
  20. 仿文献高级检索多关键词查询的网页实现

热门文章

  1. LeetCode 1318. 或运算的最小翻转次数(位运算)
  2. LeetCode 1304. 和为零的N个唯一整数
  3. LeetCode 199. 二叉树的右视图(DFS 按层queue)
  4. 朴素贝叶斯算法--过滤垃圾短信
  5. php fpm 统计,php实现fpm开启状态统计的方法
  6. 如何看当前windows是utf8还是gbk_监理工程师5月份出教材,现在如何备考?
  7. mysql pdo 事务处理_php中pdo的mysql事务处理实例
  8. 数据库实例:mysql与redis结合用户登录
  9. prompt你到底行不行?
  10. 论文浅尝 - ACL2020 | Segmented Embedding of Knowledge Graphs