Template de Solução de Problemas com Listas Encadeadas no LeetCode
Métodos Gerais e Classificação de Problemas
0. Como Percorrer uma Lista Encadeada
O código abaixo é um modelo básico de iteração, considerando que o ponteiro head pode ser nulo:
Node* atual = cabeca;
while (atual != NULL)
atual = atual->proximo;
Para calcular o comprimento da lista, por exemplo:
Node* atual = cabeca;
int contador = ...
Publicado em 7-17 18:08
Construção de Arrays e Matrizes de Produto em LeetCode
LeetCode 238: Produto de Array Exceto Próprio
Dado um array nums, retorne um array onde cada elemento é o produto de todos os outros elementos, exceto o próprio. Restrições: sem divisão e complexidade O(n).
Solução: Divide-se o cálculo em duas partes:
Produto prefixo (elementos à esquerda)
Produto sufixo (elementos à direita)
class Solucao {
...
Publicado em 7-16 21:58
LeetCode 682: Sistema de Pontuação de Beisebol (C++/Java)
O problema 682 do LeetCode simula um rgeistrador de pontos de um jogo de beisebol. Dada uma lista de strings, cada string pode ser um dos seguintes tipos:
Número inteiro: Representa diretamente os pontos ganhos na rodada atual.
"+": Os pontos da rodada atual são a soma dos pontos das duas últimas rodadas válidas.
"D": Os po ...
Publicado em 7-14 10:33
LeetCode 209: Menor Subarray com Soma Maior ou Igual ao Alvo
Enunciado
Dado um array nums de n inteiros positivos e um inteiro positivo target, determine o comprimento do menor subarray contínuo cuja soma seja maior ou igual a target. Caso não exista subarray que satisfaça a condição, retorne 0.
Exemplo
Entrada: target = 7, nums = [2, 3, 1, 2, 4, 3]
Saída: 2
Explicação: O subarray [4, 3] atinge a soma 7 ...
Publicado em 7-13 04:09
Verificação de Árvore de Busca Binária Válida
Descrição do Problema
Dado o nó raiz de uma árvore binária, determine se ela é uma Árvore de Busca Binária (BST) válida.
Definição de BST válida:
A subárvore esquerda de um nó contém apenas nós com valores menores que o valor do nó.
A subárvore direita de um nó contém apenas nós com valores maiores que o valor do nó.
Tanto a subárvore esquerda ...
Publicado em 7-10 20:37
Implementação de Correspondência de Expressões Regulares com Programação Dinâmica
Descrição do Problema
Dada uma string s e um padrão p, implemente uma função que verifique correspondência de expressões regulares com suporte a '.' e '*':
'.' corresponde a qualquer caractere único
'*' corresponde a zero ou mais ocorrências do elemento precedente
A correspondência deve abranger toda a string s, não parcial.
Abordagem de Solu ...
Publicado em 7-8 02:26
Detecção de Elementos Duplicados em Arrays com C++
A identificação de elementos repetidos em coleções de dados é um problema fundamental em ciência da computação, frequentemente encontrado em desafios de algoritmos como os do LeetCode. Veremos a seguir diferentes estratégias para resolver duas variações desse problema: a detecção simples de duplicatas e a busca por duplicatas dentro de um inter ...
Publicado em 7-5 04:59
Explorando Algoritmos de Backtracking
A técnica de backtracking é uma estratégia algorítmica fundamental, frequentemente utilizada para resolver problemas de otimização e contagem que envolvem a construção incremental de soluções. Conceitualmente, cada busca em profundidade (DFS) pode ser visualizada como a travessia de uma árvore de estados, onde cada nó representa uma escolha par ...
Publicado em 7-4 09:29
Solução do Problema de Combinações com Algoritmo Backtracking
Dados dois inteiros n e k, retorne todas as possíveis combinações de k números dentro do intervalo [1, n]. As combinações podem ser retornadas em qualquer ordem.
Abordagem Inicial
Vamos considerar n=4 e k=2. Uma primeira abordagem seria utilizar laços for aninhados:
for (int i=1; i<=4; ++i) {
for (int j=i+1; j<=4; ++j) {
// Armazen ...
Publicado em 7-3 17:21
Dominando Pilhas e Filas: Implementações Cruzadas e Aplicações Práticas em Algoritmos
Implementação de Fila com Pilhas (LeetCode 232)
Para simular o comportamento FIFO (First-In-First-Out) de uma fila utilizando estruturas LIFO (Last-In-First-Out), a abordagem mais eficiente requer o uso de duas pilhas. Uma pilha é dedicada exclusivamente para receber novos elementos (inStack), enquanto a outra é responsável por fornecer os elem ...
Publicado em 7-3 09:12