描述
利用两个队列来实现一个栈的功能
您在真实的面试中是否遇到过这个题? 是
样例
push(1)
pop()
push(2)
isEmpty() // return false
top() // return 2
pop()
isEmpty() // return true
实现代码:
利用list来模拟队列,在执行pop操作时,将que1里的值全部存放在que2中,删除最后一个元素后,再放回。
class Stack:
"""
@param: x: An integer
@return: nothing
"""
def __init__(self):
self.que1 = []
self.que2 = []
def push(self, x):
# write your code here
self.que1.append(x)
"""
@return: nothing
"""
def pop(self):
# write your code here
for i in range(len(self.que1) - 1):
self.que2.append(self.que1.pop(0))
self.que1.pop(0)
while self.que2:
self.que1.append(self.que2.pop(0))
"""
@return: An integer
"""
def top(self):
# write your code here
for i in range(len(self.que1) - 1):
self.que2.append(self.que1.pop(0))
last = self.que1.pop(0)
while self.que2:
self.que1.append(self.que2.pop(0))
self.que1.append(last)
return last
"""
@return: True if the stack is empty
"""
def isEmpty(self):
# write your code here
return self.que1 == []