【剑指Offer】17用两个栈实现队列
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
时间限制:1秒;空间限制:32768K
解题思路
由于队列的特点是先进先出,而栈是先进后出,可以用两个栈串联来实现队列:栈1先进后出,栈1出栈栈2入栈,栈2后进先出,从全局来看实现了先进先出的功能。
# -*- coding:utf-8 -*-
class Solution:
# 如果没有在__init__中初始化对应的实例变量的话,导致后续引用实例变量会出错
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
# write code here
self.stack1.append(node)
def pop(self):
# return xx
for i in range(len(self.stack1)):
self.stack2.append(self.stack1.pop())
x = self.stack2.pop()
for i in range(len(self.stack2)):
self.stack1.append(self.stack2.pop())
return x