225. pila implementado con cola de leetcode

Descripción del problema

aplicación de colas utilizando la siguiente pila:

push (x) - x elementos en la pila
pop () - quitar la parte superior de la pila
superior () - Obtiene el elemento superior
el tanque vacío () - Devuelve la pila está vacía
Nota:

Sólo puede utilizar el funcionamiento básico de la cola - que es, empujar hacia atrás, ojeada / pop de frente, tamaño, y está vacía de estas operaciones son legales.
El idioma que está utilizando no sea compatible con cola. Puede utilizar la lista o la deque (deque) para simular una cola, la cola, siempre y cuando la operación a la norma.
Usted puede asumir que todas las operaciones son válidos (por ejemplo, a una pila vacía no llama a la operación pop o superior).

Invertir la secuencia cuando la solución a un problema 1- pila

Después de usar una cola, se añade el elemento de la cola, antes de la N-1 elementos de inversión, el elemento superior permanece siempre en primer equipo

class MyStack:

    def __init__(self):
        """
        Initialize your data structure here.
        """
        self.my_queue=[]


    def push(self, x: int) -> None:
        """
        Push element x onto stack.
        """
        self.my_queue.append(x)
        for i in range(len(self.my_queue)-1):
            self.my_queue.append(self.my_queue.pop(0))



    def pop(self) -> int:
        """
        Removes the element on top of the stack and returns that element.
        """
        return self.my_queue.pop(0)


    def top(self) -> int:
        """
        Get the top element.
        """
        return self.my_queue[0]


    def empty(self) -> bool:
        """
        Returns whether the stack is empty.
        """
        return  not self.my_queue



# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()

O Pulse complejidad en tiempo (n), el pop-O (1)
Aquí Insertar imagen Descripción

El método de la pila de ajuste 2

O Pulse complejidad en tiempo (1), el pop-O (n)

class MyStack:

    def __init__(self):
        """
        Initialize your data structure here.
        """
        self.queue1=[]
        self.queue2=[]
        self.top_element=0

        


    def push(self, x: int) -> None:
        """
        Push element x onto stack.
        """
        self.queue1.append(x)
        self.top_element=x



    def pop(self) -> int:
        """
        Removes the element on top of the stack and returns that element.
        """
        item=0
        # 不加会一直报错local variable 'xxx' referenced before assignment
        #估计在for循环中只被当做for中局部变量
        for i in range(len(self.queue1)-1):
            item=self.queue1.pop(0)
            self.queue2.append(item)
        self.top_element=item
        target=self.queue1[0]
        self.queue1=self.queue2
        self.queue2=[]
        return target



    def top(self) -> int:
        """
        Get the top element.
        """
        return self.top_element


    def empty(self) -> bool:
        """
        Returns whether the stack is empty.
        """
        return self.queue1==[]

Aquí Insertar imagen Descripción

Publicados 284 artículos originales · ganado elogios 19 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_39289876/article/details/104745961
Recomendado
Clasificación