LeetCode刷题之路 验证栈序列

作者: 小北写码 | 来源:发表于2019-02-13 11:38 被阅读23次

验证栈序列【中等】

给定 pushedpopped 两个序列,只有当它们可能是在最初空栈上进行的推入 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 之前弹出。

提示:

  1. 0 <= pushed.length == popped.length <= 1000
  2. 0 <= pushed[i], popped[i] < 1000
  3. pushedpopped 的排列。

解题思路

按照题目的要求,就是要将pushed里的元素按顺序压入栈,并且可以按照popped的顺序弹出。那我们就必须要将pushed里的元素按顺序压入,直到栈顶是popped的第一个元素为止就弹出,大概就是这个过程,主要考查的就是对栈的理解。代码如下:

class Solution(object):
    def validateStackSequences(self, pushed, popped):
        """
        :type pushed: List[int]
        :type popped: List[int]
        :rtype: bool
        """
        stack = []
        i = 0
        for j in pushed:
            stack.append(j)
            while stack and stack[-1] == popped[i]:
                stack.pop()
                i = i + 1
        return not stack

相关文章

  • LeetCode刷题之路 验证栈序列

    验证栈序列【中等】 给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 pus...

  • 每日一题之二叉树的深度

    Leetcode 第104题 好久没有刷题了,晋升挂了考虑换个工作了,开始刷题之路。 leetcode国内题库链接...

  • 动态规划

    [TOC] Leetcode刷题 300. 最长递增子序列[https://leetcode-cn.com/pro...

  • leetcode 刷题之路

    作者按:以此记录leetcode刷题之路。python语言。题号是按作者自己刷题的个数累加的。与leetcode中...

  • LeetCode刷题之路 最长连续序列

    最长连续序列【困难】 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例...

  • leetcode刷题-栈

    leetcode上关于栈的题目大家可以先做20,155,232,844,224,682,496. 20给定一个只包...

  • LeetCode刷题之路 最长连续递增序列

    最长连续递增序列【简单】 给定一个未经排序的整数数组,找到最长且连续的的递增序列。 示例 1: 示例 2: 注意:...

  • leetcode 946. 验证栈序列

    题目 定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推...

  • LeetCode刷题(链表&栈)

    一、斐波那契数列https://leetcode-cn.com/problems/fibonacci-number...

  • [刷题]Leetcode-125:Valid Palindrom

    原文链接:[刷题]Leetcode-125:Valid Palindrome(验证回文串) - 高歌的博客 题目详...

网友评论

    本文标题:LeetCode刷题之路 验证栈序列

    本文链接:https://www.haomeiwen.com/subject/ejireqtx.html