题目信息

解题思路

代码

class MyQueue:

    def __init__(self):
        self.stack1 = []
        self.stack2 = []


    def push(self, x: int) -> None:
        self.stack1.append(x)

	# do not need to check empty 
	# since all pop and peek are valid
    def pop(self) -> int:
        self.trans_s1_to_s2()
        return self.stack2.pop()


    def peek(self) -> int:
        self.trans_s1_to_s2()
        return self.stack2[-1]


    def empty(self) -> bool:
        if len(self.stack1) == 0 and len(self.stack2) == 0:
            return True
        else:
            return False

	# if s2 is empty, put all ele in s1 to s2
    def trans_s1_to_s2(self) -> None:
        if len(self.stack2) == 0:
            for _ in range(len(self.stack1)):
                self.stack2.append(self.stack1.pop())



# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()