(๑•͈ᴗ•͈)❀送花给你

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())
posted @ 2021-10-23 18:56  胸前小红花  阅读(25)  评论(0)    收藏  举报