Aplicación de cola y pila LeetCode - 20. Paréntesis efectivos

¿Qué problemas clásicos pueden resolver las pilas y las colas? Todas las preguntas se pueden encontrar en mi página de inicio, invitamos a todos a prestar atención ~~

(1) Problema de coincidencia de soportes (pila)

(2) Problema de deduplicación de cadenas (pila)

  (3) Problema de expresión en polaco inverso (pila)

(4) Problema de máximo de ventana deslizante (cola monotónica) 

(5) Elementos K principales con la mayor cantidad de ocurrencias (cola de prioridad)

(6) Cola de implementación de pila

(7) Pila de implementación de cola 

1. Solución 

20. Paréntesis válidos

Dada una   cadena  que contiene solo '(', ')', '{', '}', '[',  determine si la cadena es válida.']'s

Una cadena válida debe satisfacer:

  1. Un soporte de apertura debe cerrarse con un soporte de cierre del mismo tipo.
  2. Los paréntesis de apertura deben cerrarse en el orden correcto.
  3. Cada paréntesis de cierre tiene un paréntesis de apertura correspondiente del mismo tipo

 

class MyQueue {
        Stack<Integer> stack1;
        Stack<Integer> stack2;
    public MyQueue() {
        stack1=new Stack<>();
        stack2=new Stack<>();
    }
    
    public void push(int x) {
        stack1.push(x);
    }
    
    public int pop() {
        if(!stack2.isEmpty()){
            return stack2.pop();
        }
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
        return stack2.pop();
    }
    
    public int peek() {
        if(!stack2.isEmpty()){
            return stack2.peek();
          }
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
        return stack2.peek();
    }
    
    public boolean empty() {
        return stack1.isEmpty()&&stack2.isEmpty();
    }
}

2. Conocimiento básico de la pila

La característica más notable de la pila es: primero en entrar, último en salir

1. Clases comunes de implementación de pilas en Java:

La implementación más básica: Stack<Integer> stack=new Stack<>();

Implementación de cola doble: Deque<Integer> stack=new LinkedList<>();

2. Métodos comunes de apilamiento

push(x) -- empuja un elemento al final de la cola.
pop(): elimina un elemento de la cabeza de la cola.
peek() -- devuelve el elemento al principio de la cola.
vacío(): devuelve si la cola está vacía.

3. Conocimientos básicos de colas

La característica más notable de la cola es: primero en entrar, primero en salir

1. Clases de implementación comunes de colas en Java:

Cola ordinaria: Queue<Integer> queue=new LinkedList<>();

Cola de dos extremos: Deque<Integer> queue=new LinkedList<>();

Cola de prioridad: PriorityQueue<Integer> queue=new PriorityQueue<>();

2. Métodos comunes de colas

add Agrega un elemento Si la cola está llena, lanza una excepción IIIegaISlabEepeplian
remove Elimina y devuelve el elemento al principio de la cola Si la cola está vacía, lanza un
elemento NoSuchElementException Devuelve el elemento al principio de la cola Si la cola está vacía , luego lanza una excepción NoSuchElementException

tamaño La cantidad de elementos
ofrecidos Agregue un elemento y devuelva verdadero Si la cola está llena, devuelva falso
sondeo Quite y devuelva el elemento al principio de la cola Si la cola está vacía, devuelva un
vistazo nulo Devuelva el elemento al principio de la cola Si la cola está vacía, devuelve nulo


put agrega un elemento, bloquea si la cola está llena
take elimina y devuelve el elemento al principio de la cola, bloquea si la cola está vacía

Supongo que te gusta

Origin blog.csdn.net/w20001118/article/details/127140386
Recomendado
Clasificación