31. 栈的压入、弹出序列

栈的压入、弹出序列

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

  • 如果popv下一个弹出的数字刚好是辅助栈中的栈顶,那么直接弹出
  • 如果下一个弹出的数字不是栈顶,那么把pushv中还没有入栈的数字压入辅助栈,直到把下一个需要弹出的数字压入栈顶为止
  • 如果所有数字都压入栈后仍然没有找到下一个弹出的数字,那么该序列不可能是一个弹出序列
class Solution:
    def IsPopOrder(self, pushV, popV):
        # write code here
        helper = []
        for j in popV:
            if helper and j == helper[-1]:
                helper.pop()
            elif j in pushV:
                i = 0
                while j != pushV[i] and i < len(pushV):
                    helper.append(pushV[i])
                    i += 1 
                pushV = pushV[i+1:]
            else:
                return False
        return True
全部评论

相关推荐

02-25 19:38
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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