leetcode:用两个栈实现队列
原题:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/
个人实现
class CQueue(object):
def __init__(self):
self.stack1=[]
self.stack2=[]
def appendTail(self, value):
"""
:type value: int
:rtype: None
"""
self.stack_push(1, value)
def deleteHead(self):
"""
:rtype: int
"""
length = len(self.stack1)
if length==0:
return -1
for i in range(length):
value=self.stack_pop(1)
self.stack_push(2,value)
result=self.stack_pop(2)
length=len(self.stack2)
for i in range(length):
value=self.stack_pop(2)
self.stack_push(1,value)
return result
def stack_pop(self,flag):
result=0
if flag==1:
if len(self.stack1)==0:
return -1
result=self.stack1[len(self.stack1)-1]
del self.stack1[len(self.stack1)-1]
else:
if len(self.stack2)==0:
return -1
result =self.stack2[len(self.stack2)-1]
del self.stack2[len(self.stack2) - 1]
return result
def stack_push(self,flag,value):
if flag==1:
self.stack1.append(value)
else:
self.stack2.append(value)
# Your CQueue object will be instantiated and called as such:
# obj = CQueue()
# obj.appendTail(value)
# param_2 = obj.deleteHead()
obj=CQueue()
print(obj.deleteHead())
obj.appendTail(5)
obj.appendTail(2)
print(obj.deleteHead())
print(obj.deleteHead())

浙公网安备 33010602011771号