Ordenação Léxica, Caractere Único e Caminho Máximo em Estrutura de Diretórios
1. Números em Ordem Léxica
Dado um inteiro n, o objetivo é retornar os números de 1 a n organizados em ordem lexicográfica — ou seja, como se estivessem ordenados como strings. Por exemplo, para n = 13, a sequência correta é [1, 10, 11, 12, 13, 2, 3, ..., 9]. A abordagem direta com comparação de strings seria ineficiente para entradas grandes ( ...
Publicado em 9-13 15:32
Soluções de Backtracking para Endereços IP e Subconjuntos em Python
Restauração de Endereços IP
O desafio de restaurar endereços IP consiste em inserir pontos em uma string de dígitos de forma que os segmentos resultantes constituam um endereço IPv4 válido. Cada segmento deve estar entre 0 e 255 e não pode conter zeros à esquerda, a menos que seja o próprio zero.
A solução utiliza uma abordagem recursiva (backt ...
Publicado em 8-26 04:10
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