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