题解|用两个栈实现队列

用两个栈实现队列

https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&&tqId=11158&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

栈的特点是后进先出,而队列的特点是先进先出。
那么如何用两个栈来实现一个队列呢?
设定stack1和stack2,当进行push操作时,元素都先进入stack1;当遇到pop时,判断:若stack2为空,则把stack1的元素都入栈stack2,再对stack2出栈;若stack2不为空,则继续pop其中原有元素。

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
    def push(self, node):
        self.stack1.append(node)

    def pop(self):
        if self.stack2==[]:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
#                 self.stack1.pop()
            
            val=self.stack2.pop()
#             self.stack2.pop(-1)
        else:
            val=self.stack2.pop()
#             self.stack2.pop(-1)
        return val
            
            
        # return xx

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务