用两个栈实现队列
· 约 1 分钟阅读 · – 次阅读
leetcode
队头插入:每次直接压入左边的栈即可 队尾删除:若右栈不为空,则直接弹出一个值即可;若右栈为空,则将左栈先全部入右栈,再弹出一个数
class CQueue:
def __init__(self):
self.left_stack = list()
self.right_stack = list()
def appendTail(self, value: int) -> None:
self.left_stack.append(value)
def deleteHead(self) -> int:
if not self.right_stack and not self.left_stack:
return -1
if not self.right_stack:
while self.left_stack:
self.right_stack.append(self.left_stack.pop())
return self.right_stack.pop()
else:
return self.right_stack.pop()
# Your CQueue object will be instantiated and called as such:
# obj = CQueue()
# obj.appendTail(value)
# param_2 = obj.deleteHead()