题解 | #栈的压入、弹出序列#

栈的压入、弹出序列

http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106

以 i 为标准,判断 stack 栈顶 与 popV 不同就不断入栈,直到找到相同。(这里有一个边界,开始时栈空是没有栈顶,但是需要入栈)
此时进入第二个循环,找栈顶与popV相同就不断出栈,直到不同。
结束第一个循环。
如果此时 i 已经超出边界,则说明 此时无其他可以入栈,并且,此时也没有栈顶与popV相同。这个也是边界条件,作为退出条件。
最后栈为空,则说明是弹出序列之一,否则,则不是。
# -*- coding:utf-8 -*-
class Solution:
    def IsPopOrder(self, pushV, popV):
        stack = []
        i = 0
        j = 0
        while i < len(pushV):
            while (i < len(pushV) and len(stack) == 0)&nbs***bsp;(i < len(pushV) and stack[-1] != popV[j]):
                    stack.append(pushV[i])
                    i +=1
            while len(stack) > 0 and j < len(popV) and stack[-1] == popV[j]:
                    stack.pop(-1)
                    j +=1
        return len(stack) == 0
            

全部评论

相关推荐

我:“加班需要有加班工资。”&nbsp;hr:“为什么?”&nbsp;哈哈哈哈哈哈哈离大谱
juntenor:你确实太理想化了,对社会不了解呀。这个和HR没有关系,这是国内特色,不然怎么还会有外包就这种逆天的存在呢。
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
05-24 14:12
门头沟学院 Java
点赞 评论 收藏
分享
06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客96559368...:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务