版权声明:本文由lianyhai编写,不得用于商业用途,其他用途请随便。如果非要用做商业用途请给我微信打一下钱谢谢!哈哈哈哈 https://blog.csdn.net/qq_36303521/article/details/88207733
这个题属于送分题?
先放我的思路:
栈是先进后出
队列是先进先出
那么两个栈就可以先进后出一个栈,同时先进后出另外一个栈就行了。
定义一个栈1,平常的时候为空
另外一个栈2存储数据
push的时候放进栈2
pop的时候呢,将栈2的数据暂时放进栈1,pop出栈2最后一个数据(因为他是最先进来的),再把栈1数据放到栈2去
# -*- 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 len(self.stack1)>0:
for i in range(len(self.stack1)-1):
self.stack2.append(self.stack1.pop())
xx = self.stack1.pop()
for i in range(len(self.stack2)):
self.stack1.append(self.stack2.pop())
return xx
大佬思路:
栈A用来作入队列
栈B用来出队列,当栈B为空时,栈A全部出栈到栈B,栈B再出栈(即出队列)
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stackA = []
self.stackB = []
def push(self, node):
# write code here
self.stackA.append(node)
def pop(self):
# return xx
if self.stackB:
return self.stackB.pop()
elif not self.stackA:
return None
else:
while self.stackA:
self.stackB.append(self.stackA.pop())
return self.stackB.pop()