剑指offer8:用两个栈实现队列
程序员文章站
2022-03-05 13:11:03
...
、使用两个栈,一个栈(stackPush)用于元素进栈,一个栈(stackPop)用于元素出栈;
2、pop() 或者 peek() 的时候:
(1)如果 stackPop 里面有元素,直接从 stackPop 里弹出或者 peek 元素;
(2)如果 stackPop 里面没有元素,一次性将 stackPush 里面的所有元素倒入 stackPop。
为此,可以写一个 shift 辅助方法,一次性将 stackPush 里的元素倒入 stackPop。
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.__stack1=[]
self.__stack2=[]
def push(self, node):
# write code here
self.__stack1.append(node)
def pop(self):
# return xx
if self.__stack2:
return self.__stack2.pop()
else:
if self.__stack1:
while self.__stack1:
self.__stack2.append(self.__stack1.pop())
return self.__stack2.pop()
else:
return None
def peek(self):
if not self.__stack2:
while self.__stack1:
self.__stack2.append(self.__stack1.pop())
return self.__stack2[-1]
上一篇: awk内置变量