232. Leetcode232 usa la pila para implementar la cola

Descripción del Título

Utilice solo dos pilas para implementar una cola de primero en entrar, primero en salir. La cola debe admitir todas las operaciones admitidas por la cola general (push, pop, peek, empty):

Implemente la clase MyQueue:

void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false

Descripción:

Solo puede usar operaciones de pila estándar, es decir, solo las operaciones de empujar hacia arriba, mirar / sacar desde arriba, el tamaño y las operaciones vacías son legales.
Es posible que el idioma que está utilizando no admita pilas. Puede usar list o deque (cola de dos extremos) para simular una pila, siempre que sea una operación de pila estándar.

Avanzado:

¿Puede implementar una cola con O (1) tiempo amortizado para cada operación? En otras palabras, la complejidad de tiempo total de realizar n operaciones es O (n), incluso si una de las operaciones puede llevar mucho tiempo.

Ejemplo:

ingresar:

["MyQueue", "push", "push", "peek", "pop", "empty"]
[[], [1], [2], [], [], []]

Producción:

[null, null, null, 1, 1, false]

Explicación:

MyQueue myQueue = new MyQueue();
myQueue.push(1); // queue is: [1]
myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
myQueue.peek(); // return 1
myQueue.pop(); // return 1, queue is [2]
myQueue.empty(); // return false

inmediato:

1 <= x <= 9
Llamar push, pop, peek y vaciar hasta 100 veces,
asumiendo que todas las operaciones son válidas (por ejemplo, una cola vacía no llamará operaciones pop o peek)

Ideas para resolver problemas

Prepare la temperatura y las primeras pilas. Cuando
apunte a la operación de empuje, empuje el elemento a la primera pila

Después de realizar las siguientes operaciones, las dos pilas se muestran en la siguiente figura

MyQueue myQueue = new MyQueue();
myQueue.push(11)
myQueue.push(22)
myQueue.push(33)

Inserte la descripción de la imagen aquí
Después de realizar las siguientes operaciones, las dos pilas se muestran en la siguiente figura

myQueue.peek ()

Todos los elementos ingresan a la pila temporal
Inserte la descripción de la imagen aquí
y restauran el elemento original después de obtener el primer elemento del equipo.

Inserte la descripción de la imagen aquí

Después de realizar las siguientes operaciones, las dos pilas se muestran en la siguiente figura

myQueue.pop();

Primero mueva todos los elementos a la pila temporal y saque
Inserte la descripción de la imagen aquí
el elemento superior de la pila temporal, es decir, el primer elemento del equipo.
Inserte la descripción de la imagen aquí

Regrese el elemento a la temperatura después de hacer estallar el elemento líder
Inserte la descripción de la imagen aquí

Código

class MyQueue {
    
    
        private Stack<Integer> temp;
        private  Stack<Integer> first;
        /** Initialize your data structure here. */
        public MyQueue() {
    
    
          temp=new Stack<Integer>();
          first=new Stack<Integer>();
        }

        /** Push element x to the back of queue. */
        public void push(int x) {
    
    
           first.push(x);
        }

        /** Removes the element from in front of queue and returns that element. */
        public int pop() {
    
    
           while (!first.empty()){
    
    
               temp.push(first.pop());
           }
           int result=temp.pop();
            while (!temp.empty()){
    
    
                first.push(temp.pop());
            }
           return result;
        }

        /** Get the front element. */
        public int peek() {
    
    
            while (!first.empty()){
    
    
                temp.push(first.pop());
            }
            int result=temp.pop();
            temp.push(result);while (!temp.empty()){
    
    
                first.push(temp.pop());
            }
            return result;
        }

        /** Returns whether the queue is empty. */
        public boolean empty() {
    
    
            return first.isEmpty();
        }
    }

Supongo que te gusta

Origin blog.csdn.net/pjh88/article/details/114440727
Recomendado
Clasificación