网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1505|回复: 0
打印 上一主题 下一主题

栈的压入,弹出序列

[复制链接]

97

主题

98

帖子

447

积分

版主

Rank: 7Rank: 7Rank: 7

积分
447
跳转到指定楼层
楼主
发表于 2020-12-9 15:49:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
示例1
输入:[1,2,3,4,5],[4,3,5,1,2]
返回值:false
实现代码:
class Solution:
    def IsPopOrder(self, pushV, popV):
        # write code here
        if not pushV or not popV:
            return False
         
        stack = []
        index = 0
        for i in pushV:
            stack.append(i)
            while stack and stack[-1] == popV[index]:
                stack.pop()
                index += 1
                 
        if not stack:
            return True
        return False  

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-12-22 11:18 , Processed in 0.034739 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表