剑指offer 之 两个栈来实现一个队列

来源:互联网 发布:s7200编程视频 编辑:程序博客网 时间:2024/06/04 18:37
# -*- coding:utf-8 -*-

'''
面试7:
    用两个栈来实现一个队列,完成队列的Push和Pop操作。
    思路:压入statck1,而删除的时候先检查stack2顶是否有元素,
          有则直接删除,无则把stack1的栈顶依次压入stack2,再删除stack2的栈顶元素
    @author : chimuuu
'''
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []

    def push(self, node):
        # write code here
        self.stack1.append(node)

    def pop(self):
        # return xx
        if len(self.stack1) == 0 and len(self.stack2) == 0:
            return []
        elif len(self.stack2) != 0:
            return self.stack2.pop()

        elif len(self.stack2) == 0:
            while len(self.stack1) > 0:
                self.stack2.append(self.stack1.pop())
            return self.stack2.pop()

P = Solution()
P.push(1)
P.push(2)
P.push(3)
print(P.pop())
print(P.pop())
P.push(4)
print(P.pop())
P.push(5)
print(P.pop())
print(P.pop())

阅读全文
0 0
原创粉丝点击