剑指offer:05 用两个栈实现队列

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

基本思想

两个栈s1和s2,入队就将元素入s1栈,出队时,如果s2中为空,将s1里全部元素弹出压入s2,再弹出;如果s2中不为空,则弹出,直到s2为空

Python

class Solution:

    def __init__(self):

        self.s1 = []

        self.s2 = []

    def push(self, node):

        # write code here

        self.s1.append(node)

    def pop(self):

        # return

        if self.s2: #s2不为空

            return self.s2.pop()

        elif not self.s1: #s1为空

            return None

        else:

            while self.s1: # s2为空,s1不为空

                self.s2.append(self.s1.pop())

            return self.s2.pop()

你可能感兴趣的:(剑指offer:05 用两个栈实现队列)