Aplicativo de pilha e fila LeetCode - 20. Parênteses efetivos

Quais problemas clássicos as pilhas e filas podem resolver? Todas as perguntas podem ser encontradas na minha página inicial, bem-vindo a todos para prestar atenção ~~

(1) Problema de correspondência de colchetes (pilha)

(2) Problema de desduplicação de string (pilha)

  (3) Problema de expressão polonesa reversa (pilha)

(4) Problema máximo da janela deslizante (fila monotônica) 

(5) Top K elementos com mais ocorrências (fila de prioridade)

(6) Fila de implementação de pilha

(7) Pilha de implementação de fila 

1. Solução 

20. Parênteses válidos

Dada uma   string  que contém apenas '(', ')', '{', '}', '[',  determine se a string é válida.']'s

Uma string válida deve satisfazer:

  1. Um colchete de abertura deve ser fechado com um colchete de fechamento do mesmo tipo.
  2. Os parênteses de abertura devem ser fechados na ordem correta.
  3. Cada parêntese de fechamento tem um parêntese de abertura correspondente do mesmo 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. Conhecimento básico da pilha

A característica mais notável da pilha é: primeiro a entrar, último a sair

1. Classes de implementação comuns de pilhas em Java:

A implementação mais básica: Stack<Integer> stack=new Stack<>();

Implementação de fila dupla: Deque<Integer> stack=new LinkedList<>();

2. Métodos comuns de pilha

push(x) -- empurra um elemento para o final da fila.
pop() -- remove um elemento do início da fila.
peek() -- retorna o elemento no início da fila.
empty() -- retorna se a fila está vazia.

3. Conhecimento básico de filas

A característica mais notável da fila é: primeiro a entrar primeiro a sair

1. Classes comuns de implementação de filas em Java:

Fila comum: Queue<Integer> queue=new LinkedList<>();

Fila dupla: Deque<Integer> queue=new LinkedList<>();

Fila de prioridade: PriorityQueue<Integer> fila=new PriorityQueue<>();

2. Métodos comuns de filas

add Adiciona um elemento Se a fila estiver cheia, lança uma exceção IIIegaISlabEepeplian
remove Remove e retorna o elemento no início da fila Se a fila estiver vazia, lança um
elemento NoSuchElementException Retorna o elemento no início da fila Se a fila estiver vazia , em seguida, lança um NoSuchElementException

size O número de elementos
oferecidos Adicionar um elemento e retornar true Se a fila estiver cheia, retornar false
poll Remover e retornar o elemento no início da fila Se a fila estiver vazia, retornar null
peek Retornar o elemento no início da fila Se a fila estiver vazia, retorne null


put adiciona um elemento, bloqueia se a fila estiver cheia
take remove e retorna o elemento no início da fila, bloqueia se a fila estiver vazia

Acho que você gosta

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