题目:
是的,我又不想打了,如题
本身这个很基础,主要及时判断一下栈是不是空。但是因为OJ用的不熟练,所以写一个这个OJ
# -*- coding:utf-8 -*-
class Solution:
def push(self, node):
# write code here
def pop(self):
# return xx
1:不知道怎么把stack放进去,这个栈该放在这个类的哪里
def __init__(self):
self.stack1 = []
self.stack2 = []
2:就是剩下的事情了
def push(self, node):
self.stack1.append(node)
def pop(self):
if self.stack2:
return self.stack2.pop()
elif self.stack1:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
else:
return None
下面是用两个队列实现栈,不想写测试用例了,改天写一个再运行吧。大致思路如下
放入的时候放入那个不空的队列
出的时候要出的就剩一个,其他的放入另一个空队列中,然后把剩下的这一个return
class Solution:
def __init__(self):
self.queue1 = []
self.queue2 = []
def push(self,data):
if self.queue1:
self.queue1.append(data)
elif self.queue2:
self.queue2.append(data)
else:
self.queue1.qppend(data)
def pop(self):
if not self.queue1 and not self.queue2:
return None
elif not self.queue2:
if len(self.queue1) == 1:
return self.queue1.pop()
else:
while len(self.queue1) >1:
self.queue2.append(self.queue1.pop())
return self.queue1.pop()
else:
if len(self.queue2) == 1:
return self.queue2.pop()
else:
while len(self.queue2) >1:
self.queue1.append(self.queue2.pop())
return self.queue2.pop()