《剑指office》第五题 用两个栈表示(Python)

题目描述

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

# -*- coding:utf-8 -*-
class Solution:
    def push(self, node):
        # write code here
    def pop(self):
        # return xx

思路:

定义两个空栈  starck1,stack2

队列的入队操作同栈的入队操作是一样的

队列的出队操作是先进先出  栈的出队顺序是先进后出

将元素存入在第一个栈中,从第一个栈中拿出元素放在第二个栈中,此时从第二个栈中取出元素的顺序就是队列的出队列顺序

# -*- 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

 

 

你可能感兴趣的:(剑指office)