我是靠谱客的博主 精明小土豆,最近开发中收集的这篇文章主要介绍LeetCode题解(Offer31):判断两个序列是否可能为栈的压入和弹出序列(Python),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:原题链接(中等)

标签:栈、情景模拟

解法时间复杂度空间复杂度执行用时
Ans 1 (Python) O ( N ) O(N) O(N) O ( N ) O(N) O(N)48ms (60.94%)
Ans 2 (Python) O ( N ) O(N) O(N) O ( N ) O(N) O(N)52ms (35.79%)
Ans 3 (Python)

解法一(情景模拟1):

class Solution:
    def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool:
        N1 = len(pushed)
        N2 = len(popped)
        stack = []
        idx1 = 0
        idx2 = 0
        while idx1 < N1 or idx2 < N2:
            if stack and stack[-1] == popped[idx2]:
                stack.pop()
                idx2 += 1
            else:
                if idx1 < N1:
                    stack.append(pushed[idx1])
                    idx1 += 1
                else:
                    return False
        return not stack

解法二(情景模拟2):

class Solution:
    def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool:
        stack = []
        idx = 0
        for n in pushed:
            stack.append(n)
            while stack and stack[-1] == popped[idx]:
                stack.pop()
                idx += 1
        return not stack

最后

以上就是精明小土豆为你收集整理的LeetCode题解(Offer31):判断两个序列是否可能为栈的压入和弹出序列(Python)的全部内容,希望文章能够帮你解决LeetCode题解(Offer31):判断两个序列是否可能为栈的压入和弹出序列(Python)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部