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

栈的压入、弹出序列

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

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pushV int整型一维数组 
# @param popV int整型一维数组 
# @return bool布尔型
#
class Solution:
    def IsPopOrder(self , pushV: List[int], popV: List[int]) -> bool:
        # write code here
        new_stack = []#模拟栈的压入和弹出过程
        for i in pushV:
            new_stack.append(i)#碰到一个入栈的序列,首先入栈一次
            while(len(popV) != 0):#如果出栈序列还有元素则继续循环
                if(popV[0] in new_stack):#判断出栈序列剩余的第一个元素是否在栈内,如果在是不是栈顶,是则弹出,不是则直接False
                    if(popV[0] == new_stack[len(new_stack)-1]):
                        x = new_stack[len(new_stack)-1]
                        popV.remove(x)#将X弹出,并继续下一次循环的判断
                        new_stack.remove(x)
                    else:
                        return False
                else:
                    break#否则因为出栈序列的剩余第一个元素不在,则继续入栈即可
        if(len(new_stack) == 0 and len(popV) == 0):#如果模拟的堆栈和出栈序列都清空,则返回True,否则返回False
            return True
        else:
            return False
全部评论

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务