Leetcode Link: 剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode)

题目

本题只能用 pop()append()操作,不能用列表的其它操作。

解法一

思路: 来回倒就行 辅助栈图解(Python3、C++) - 用两个栈实现队列 - 力扣(LeetCode)

题解

class CQueue:
    def __init__(self):
        self.pop_stack = []  # 用来pop
        self.append_stack = [] # 用来append
 
    def appendTail(self, value: int) -> None:
        if self.append_stack == []:
            while(self.pop_stack):
                self.append_stack.append(self.pop_stack.pop())
        self.append_stack.append(value)
 
    def deleteHead(self) -> int:
        if not self.pop_stack  and not self.append_stack:
            return -1
        if self.pop_stack == []:
            while(self.append_stack):
                self.pop_stack.append(self.append_stack.pop())
        return self.pop_stack.pop()

启发和联系