lintcode练习- 494. 双队列实现栈

描述

利用两个队列来实现一个栈的功能

您在真实的面试中是否遇到过这个题?  是

样例

push(1)
pop()
push(2)
isEmpty() // return false
top() // return 2
pop()
isEmpty() // return true

实现代码:

利用list来模拟队列,在执行pop操作时,将que1里的值全部存放在que2中,删除最后一个元素后,再放回。

class Stack:
    """
    @param: x: An integer
    @return: nothing
    """
    def __init__(self):
        self.que1 = []
        self.que2 = []
    
    def push(self, x):
        # write your code here
        self.que1.append(x)

    """
    @return: nothing
    """
    def pop(self):
        # write your code here
        for i in range(len(self.que1) - 1):
            self.que2.append(self.que1.pop(0))
        self.que1.pop(0)
        while self.que2:
            self.que1.append(self.que2.pop(0))

    """
    @return: An integer
    """
    def top(self):
        # write your code here
        for i in range(len(self.que1) - 1):
            self.que2.append(self.que1.pop(0))
        last = self.que1.pop(0)
        while self.que2:
            self.que1.append(self.que2.pop(0))
        self.que1.append(last)
        return last

    """
    @return: True if the stack is empty
    """
    def isEmpty(self):
        # write your code here
        return self.que1 == []
 

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/81265639