塞进裤子ヾ(≧O≦)〃嗷~

0%

用两个栈实现队列

栈是先进后出,队列是先进先出。

图源剑指offer

stack1为abc,stack2为空栈

当删除元素时,把stack1的元素压入stack2。

比如删除栈底的a,将stack1的元素从栈顶依次压入stack2,stack1为空,stack2自底向上为cba,然后删除stack2的栈顶元素a,这时如图(b)所示。若队列继续删除元素,依旧将stack2的栈顶元素弹出,这时如图(c)所示。

当插入元素d时,保证stack1里为空,直接往stack1里插。

删除从stack2里删。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)

def pop(self):

if len(self.stack2) != 0:
return self.stack2.pop()
#将stack1的元素压入stack2
while len(self.stack1)>0:
popelem = self.stack1.pop() #弹出stack1的栈顶元素
self.stack2.append(popelem)
if len(self.stack2) == 0:
return None
# stack2不为空
return self.stack2.pop()
if help:小手一抖点个广告 or 大手一挥资助一下