题解|用两个栈实现队列
用两个栈实现队列
https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&&tqId=11158&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
栈的特点是后进先出,而队列的特点是先进先出。
那么如何用两个栈来实现一个队列呢?
设定stack1和stack2,当进行push操作时,元素都先进入stack1;当遇到pop时,判断:若stack2为空,则把stack1的元素都入栈stack2,再对stack2出栈;若stack2不为空,则继续pop其中原有元素。
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] def push(self, node): self.stack1.append(node) def pop(self): if self.stack2==[]: while self.stack1: self.stack2.append(self.stack1.pop()) # self.stack1.pop() val=self.stack2.pop() # self.stack2.pop(-1) else: val=self.stack2.pop() # self.stack2.pop(-1) return val # return xx