【剑指Offer】用两个栈来实现队列 解题报告(python)

【剑指Offer】用两个栈来实现队列 解题报告(python)

标签(空格分隔): LeetCode


题目地址:https://www.nowcoder.com/ta/coding-interviews

题目描述:

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

Ways

第一个栈临时保存插入的数据,当调用弹出函数的时候,如果stack2不为空则直接弹出;为空则把stack1中的数据全部弹出放到stack2中。

这样不会存在冲突,而且由于stack2保存的是以前的老数据,弹出一定都符合队列的规律。

# -*- 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:
            return self.stack2.pop()
        else:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
            return self.stack2.pop()

Date

2018 年 3 月 9 日

你可能感兴趣的:(算法,牛客网,剑指offer)