python 牛客网 剑指offer 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

版权声明:本文由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()

猜你喜欢

转载自blog.csdn.net/qq_36303521/article/details/88207733
今日推荐