题解 | #用两个栈实现队列#
用两个栈实现队列
https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6
""" 用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。 """ class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] def push(self, node): self.stack1.append(node) return node def pop(self): # 将第一个栈中内容弹出放入第二个栈中 while self.stack1: self.stack2.append(self.stack1.pop()) # 第二个栈栈顶就是最先进来的元素,即队首 res = self.stack2.pop() # 再将第二个栈的元素放回第一个栈 while self.stack2: self.stack1.append(self.stack2.pop()) return res if __name__ == '__main__': s = Solution() print(s.push(1)) print(s.push(3)) print(s.push(2)) print(s.pop()) print(s.pop()) print(s.pop())