Niuke.com cepillando preguntas: usando dos pilas para implementar colas

Descripción del problema

Utilice dos pilas para implementar una cola y completar las operaciones Push y Pop de la cola. Los elementos de la cola son de tipo int.
Pila
: primero en entrar, último en salir Cola: primero en entrar, primero en salir

Ejemplo

Ejemplo 1

empujar : 1,2,3
pop : 3,2,1

Soluciones

análisis

  1. Debido a que la pila y la cola están dentro y fuera de orden, podemos usar dos pilas para resolver el problema. Stack1 es responsable de almacenar datos push, y stack2 es responsable de empujar la entrada de statk1 en stack2 a su vez durante la operación pop, por lo que la secuencia de apilamiento se convierte en el orden de la cola.

Código

// 思路1
public class Solution {
    
      
    // 用两个栈来实现一个队列
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();

    public void push(int node) {
    
    
        stack1.push(node);
    }

    public int pop() {
    
    
        while (stack2.isEmpty()) {
    
    
            while (!stack1.isEmpty()) {
    
    
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }
}

Si quieres hacer la prueba, puedes ir directamente al enlace de Niuke.com para hacer la prueba

Implementando una cola con dos pilas

Supongo que te gusta

Origin blog.csdn.net/qq_35398517/article/details/113919455
Recomendado
Clasificación