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) O próximo elemento maior (pilha monotônica)
(5) Receber água da chuva (pilha monótona)
(6) Problema máximo da janela deslizante (fila monotônica)
(7) Top K elementos com mais ocorrências (fila de prioridade)
(8) Fila de implementação de pilha
(9) Pilha de implementação de fila
1. Solução
Dada uma matriz de números inteiros temperatures
representando as temperaturas de cada dia, retorne uma matriz answer
em que, answer[i]
para o i
dia, ocorra a próxima temperatura mais alta em dias. Se a temperatura não subir depois disso, use-o 0
nesse .
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
Deque<Integer> deque=new LinkedList<Integer>();
int[] res=new int[temperatures.length];
for(int i=0;i<temperatures.length;i++){
int num=temperatures[i];
while(!deque.isEmpty()&&num>temperatures[deque.peek()]){
int index=deque.pop();
res[index]=i-index;
}
deque.push(i);
}
return res;
}
}
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