algorithms_and_data_structures
1.0.0
Status atual | Estatísticas |
---|---|
Problemas totais de C++ | 188 |
Problemas totais de Python | 15 |
Sequência diária atual | 11 |
Última sequência | 20/06/2019 - 21/06/2019 |
Sequência Atual | 23/06/2019 - 03/07/2019 |
Nota: Parte do código aqui é antigo e foi escrito quando eu estava aprendendo C++. Pode ser possível que o código não seja seguro ou faça suposições erradas. Por favor, use com cuidado. Solicitações pull são sempre bem-vindas.
Problema | Solução |
---|---|
Encontre o enésimo nó da lista vinculada por último. | nthToLastNode.cpp, nth_to_last_node.py |
Adicione números onde cada dígito do número é representado por um nó de uma lista vinculada. Forneça a saída como uma lista vinculada. | add_two_numbers_lists.cpp, add_two_numbers_list.py |
Troque nós de uma lista vinculada sem trocar dados. | swapNodesWithoutSwappingData.cpp, swap_nodes_without_swapping_data.py |
Reverter uma lista vinculada, de forma iterativa e recursiva | reverseLinkedListIterAndRecurse.cpp, reverse_linkedlist.py |
Dada uma lista vinculada, inverta os nós alternativos e anexe no final. | inverterAlternateNodes.cpp |
Dado apenas um ponteiro de nó, exclua o nó da lista vinculada. | deleteNode.cpp |
Exclua toda a lista vinculada. | excluirLinkedlist.cpp |
Imprima o nó intermediário da lista vinculada sem iterar duas vezes. | printMiddleNode.cpp |
Determine se uma lista vinculada é um palíndromo. | listaPallindrome.cpp |
Insira dados em uma lista vinculada classificada. | insertInASortedLinkedList.cpp |
Determine o ponto de intersecção (mesclagem) de duas listas vinculadas fornecidas. | findIntersectionPointOfLists.cpp, interseção_de_listas.py |
Clone uma lista vinculada que possui next e um ponteiro aleatório, Space Complexity - O(1). | cloneListWithRandomPtr.cpp, clone_list_with_random_ptr.py |
Dada uma lista vinculada classificada com duplicatas, remova as duplicatas em uma iteração. | removerDuplicatesFromSortedList.cpp |
Usando o algoritmo de localização de ciclo do Floyd, detecte se uma lista vinculada contém ciclo, se contiver ciclo, remova o loop | floyedCycleDetection.cpp |
Classifique uma lista vinculada usando classificação por mesclagem | mesclar_sort.cpp |
Dada uma lista encadeada única L 0 -> L 1 -> … -> L n-1 -> L n . Reorganize os nós na lista (no lugar) para que a nova lista formada seja: L 0 -> L n -> L 1 -> L n-1 -> L 2 -> L n-2 .... | rearrange_list.cpp |
Incluir contém implementação de cabeçalho único de estruturas de dados e alguns algoritmos.
Estrutura/algoritmo de dados | Implementação |
---|---|
Macros e algoritmos genéricos como troca, geração de números aleatórios | genérico.h |
Implementação de pilha genérica | pilha.h |
Implementação de fila genérica | fila.h |
Implementação de lista genérica | lista.h |
Implementação de árvore de pesquisa binária | binárioSearchTree.h |
Implementação de classificação rápida | classificação rápida.h |
Implementação de classificação de mesclagem | mesclarSort.h |
Implementação de classificação por seleção | seleçãoClassificar.h |
Implementação de classificação por bolha | bolhaSort.h |
Implementação de Double LinkedList do Kernel Linux | lista_ligada_dupla.h |
Implementação de gráfico genérico (lista de adjacências) | gráfico.h |
Implementação de classificação de heap | heap_sort.h |
Minha própria implementação de biblioteca de strings | pstring.h pstring.cpp |
Problema | Solução |
---|---|
Determine se um número é uma potência de 2. | potência_de_2.cpp |
Adicione dois números binários representados como string. | addBin.cpp |
Determine a próxima potência de 2 para um determinado número. | next_power_of_2.cpp |
Usando a manipulação de bits, determine se um número é múltiplo de 3. | múltiplo_de_3.cpp |
Determine o endianess da máquina, imprima um número no endianess reverso. | reversoEndianness.cpp |
Encontre a paridade de determinado número. | find_parity.cpp |
Implemente a multiplicação rápida de um número até 7 usando manipulação de bits. | multiplicar_por_7.cpp |
Reverter bits de número inteiro sem sinal (dois métodos - Reverter bit a bit e dividir e conquistar). | ReverseBitsOfAnInteger.cpp |
Pequena função para determinar a posição do bit definido mais à direita em um determinado número inteiro. | right_most_set_bit.cpp |
Dado um vetor de números, apenas um número ocorre um número ímpar de vezes, encontre o número. | find_odd_one_out.cpp |
Dados dois números inteiros, determine se sua soma seria um estouro de números inteiros. | inteiroOverflow.cpp |
Quantas operações de inversão de bits seriam necessárias para converter o número A em B. | contagemNumberOfBitFlips.cpp |
Dado um número x e duas posições (do lado direito) na representação binária de x, escreva uma função que troque n bits certos em determinadas duas posições e retorne o resultado. É também dado que os dois conjuntos de bits não se sobrepõem. | swapSetOfBits.cpp |
Adicione dois números sem usar operadores aritméticos | adição_sem_operadores.cpp |
Louise e Richard jogam um jogo. Eles têm um contador definido para N. Louise faz o primeiro turno e os turnos se alternam depois disso. No jogo, eles realizam as seguintes operações:
| counter_game.cpp |
Determine se dois números inteiros têm sinais opostos. | check_opposite_signs.cpp |
Troque dois bits nas posições p e q de um determinado número inteiro. | swapBits.cpp |
Verifique se um número é potência de 4. | check_if_power_of_4.cpp |
Problema | Solução |
---|---|
Problema 1-1: Edição 6: Escreva um algoritmo para determinar se uma string possui caracteres únicos ou não. Podemos fazer isso sem usar estruturas de dados adicionais? | 1-1-hasUniqueChars.cpp, 1-1-hasUniqueChars.py |
Problema 1-2: Edição 5: Reverta uma string quando você passa uma string C terminada em nulo. | 1-2-edi5-reverseString.cpp |
Problema 1-2: Edição 6: Dadas duas strings, determine se uma é uma permutação da outra. | 1-2-perm-strings.cpp, 1-2-perm-strings.py |
Problema 1-3: Edição 5: Escreva um algoritmo para remover caracteres duplicados de uma string. | 1-3-edi5-removeDuplicates.cpp |
Problema 1-3: Edição 6: URLify: Substitua todos os espaços em uma string por '%20'. De preferência no local | 1-3-URLify.cpp |
Problema 1-4: Edição 6: Dada uma string, escreva uma função para verificar se é uma permutação de um palíndromo. | 1-4-palíndromo-permutações.cpp |
Problema 1-5: Edição 6: Existem três edições possíveis que podem ser realizadas em uma string - Inserir um caractere, Excluir um caractere, Substituir um caractere. Dadas duas strings, determine se elas estão a uma ou nenhuma edição de distância. | 1-5-one-edit-away.cpp |
Problema 1-6: Implemente um método para realizar compactação básica de strings. A string de exemplo aabcccccaaa deve ser compactada para a2b1c5a3 , no entanto, se a string compactada for maior que a string original, retorne a string original | Compactação de 1-6 strings.cpp |
Problema 1-7: Gire a matriz no sentido horário (e anti-horário) em 90 graus | Rotação de matriz 1-7.cpp |
Problema 1-8: Escreva um algoritmo tal que se um elemento da matriz MxN for 0, toda a sua linha e coluna serão definidas como 0. | 1-8-matriz zero.cpp |
Problema 1-9: Dadas duas strings s1 e s2, determine que s2 é a rotação de s1 usando apenas uma chamada para uma função que verifica se uma string é a rotação de outra. | Rotação de 1-9 cordas.cpp |
Problema 2-1: Remova duplicatas de uma lista vinculada não classificada . E se nenhum buffer temporário for permitido? | 2-1-remove-dups.cpp |
Problema 2-2: Determine o k- ésimo nó do último de uma lista vinculada individualmente. (Abordagens Iterativas e Recursivas) | 2-2-kthToLast.cpp |
Problema 2-3: Implemente um algoritmo para excluir um nó no meio de uma lista vinculada individualmente | 2-3-delete-middle-node.cpp |
Problema 2-4: Particione uma lista vinculada em torno de um valor x, todos os nós menores que x vêm antes de todos os nós maiores que iguais a x | 2-4-partição.cpp |
Problema 2-5: Você tem dois números representados por uma lista encadeada onde cada nó contém um único dígito. Os dígitos são armazenados em ordem inversa, de forma que os dígitos 1 fiquem no topo da lista. Escreva uma função que some os dois números e retorne a soma como uma lista vinculada.Exemplo:
| 2-5-add-lists.cpp |
Problema 2-6: Determine se a lista vinculada é palíndromo (2 abordagens iterativas e uma recursiva | 2-6-palíndromo.cpp |
Problema 2-7: Determine se duas listas vinculadas individualmente se cruzam; em caso afirmativo, retorne o nó de interseção. A intersecção é definida com base na referência e não nos valores | 2-7-interseção.cpp |
Problema 2-8: Detecte se a lista vinculada tem um loop, encontre o nó inicial do loop e remova o loop | 2-8-loop-detection.cpp |
Problema | Solução |
---|---|
Nº termo de Fibonacci usando diferentes técnicas de memoização | fibonacci.cpp |
Problema de Subsequência Comum Mais Longa | lcs.cpp, mais longa_common_subsequence.py |
Wiki do problema de subsequência contígua de valor máximo | max_subsequence.cpp |
Número catalão - Conte o número de possíveis árvores de pesquisa binária com n chaves | número_catalan.cpp |
Calcule o número de caminhos exclusivos da origem (0, 0) ao destino (m-1, n-1) na grade amxn. Você só pode mover-se para baixo ou para a direita. | caminhos_exclusivos.cpp |
0-1 Problema da Mochila: Imagine que você é um ladrão e quer roubar coisas com o espaço cheio de coisas. Você tem uma mochila que suporta a capacidade máxima de peso W e deseja enchê-la de forma que valha ao máximo. Sendo um ladrão inteligente, você conhece os pesos e valores de cada item do quarto. Como você encheria sua mochila, de modo que obtivesse o valor máximo possível, de modo que só pudesse encher até a capacidade W. | 0_1_knapsack_problem.cpp |
Problema | Solução |
---|---|
Travessia de ordem de nível iterativo da árvore usando fila | levelOrderTraversalIterative.cpp, level_order_tree_traversal_iterative.py |
Percurso de ordem de nível recursivo da árvore | levelOrderTraversalRecursive.cpp, level_order_tree_traversal_recursive.py |
Travessia em ziguezague da árvore | zigZagTraversal.cpp, zig_zag_traversal.py |
Predecessor e sucessor de um determinado nó na árvore de pesquisa binária | antecessorSucessor.cpp |
Dados os valores de dois nós em uma árvore de pesquisa binária, encontre o menor ancestral comum (LCA). Suponha que ambos os valores existam na árvore. | menor-ancestral comum.cpp, menor_common_ancestor.py |
Dada uma árvore binária (ao contrário da árvore de pesquisa binária), encontre o Menor Ancestral Comum (LCA). | árvore binária-ancestral-comum mais baixa.cpp |
Dada uma árvore binária, imprima todos os seus caminhos raiz-folha, um por linha. | printAllRootToLeafPath.cpp |
Determine se uma árvore é uma árvore de soma. Uma SumTree é uma árvore binária onde o valor de um nó é igual à soma dos nós presentes em sua subárvore esquerda e subárvore direita. Uma árvore vazia é SumTree e a soma de uma árvore vazia pode ser considerada 0. Um nó folha também é considerado SumTree. | sumTree.cpp |
Converta uma árvore em sumTree, de modo que cada nó seja a soma das subárvores esquerda e direita da árvore original. | convert_to_sum_tree.cpp, convert_to_sum_tree.py |
Converta uma matriz classificada em uma árvore de pesquisa binária balanceada. | sortedArrayToBST.cpp |
Dada uma árvore binária, gere a soma de cada coluna vertical. | verticalSum.cpp |
Dada uma árvore binária e uma chave, o nó com chave existe na árvore. Encontre todos os ancestrais do nó com chave, os ancestrais aqui estão os nós que estão no caminho direto do nó à raiz. | node_ancestors_in_root_path.cpp |
Dada uma árvore binária e uma chave, retorne o nível do nó com a chave. A raiz está no nível 1 e se o nó com chave não existir na árvore, retorne 0 | nível_de_nó.cpp |
Dada uma árvore binária, encontre todos os caminhos da raiz aos nós, cuja soma é k. | k_sum_paths.cpp |
Dada uma árvore binária, imprima seus nós nível por nível na ordem inversa. ou seja, todos os nós presentes no último nível devem ser impressos primeiro, seguidos pelos nós do penúltimo nível e assim por diante. Todos os nós de qualquer nível devem ser impressos da esquerda para a direita. | ReverseLevelOrderTraversal.cpp |
Inverta uma árvore binária, recursiva e iterativamente. | inverter_a_tree.cpp |
Dada uma árvore de pesquisa binária, encontre o teto e o chão de uma determinada chave nela. Se a chave fornecida estiver no BST, então floor e ceil serão iguais a essa chave, caso contrário, ceil será igual à próxima chave maior (se houver) no BST e floor será igual à chave maior anterior (se houver) no BST | floor_ceil_bst.cpp |
Encontre o k-ésimo menor elemento em uma árvore de pesquisa binária | kth_smallest.cpp |
Valide se uma determinada árvore binária é uma árvore binária de pesquisa. | validar_bst.cpp |
Dada uma árvore de pesquisa binária e um número de destino, retorne verdadeiro se existirem dois elementos no BST de modo que sua soma seja igual ao destino fornecido. | find_target_k.cpp |
Dada uma árvore de pesquisa binária não vazia e um valor alvo, encontre o valor no BST que está mais próximo do alvo. Além disso, observe que o valor alvo é um ponto flutuante. Haverá apenas um valor exclusivo que está mais próximo do alvo. | valor_bst_mais próximo.cpp, valor_bst_mais próximo.py |
Dada uma árvore binária, atravessando a pré-ordem, construa uma saída de string contendo valores de nós e parênteses. O nó nulo precisa ser representado pelo par de parênteses vazio "()". E você precisa omitir todos os pares de parênteses vazios que não afetam o relacionamento de mapeamento um para um entre a string e a árvore binária original. Exemplos no arquivo de código | string_from_tree.cpp |
Problema | Solução |
---|---|
Implementação do algoritmo Robin-Karp para pesquisa de strings | robinKarpStringMatching.cpp |
Encontre a próxima permutação de uma determinada string, ou seja. reorganizar a string fornecida de uma maneira que seja a próxima string lexicograficamente maior do que a string fornecida | próxima_permutação.cpp |
Implementação do algoritmo Z para correspondência de padrões | z.cpp |
Casos de teste para biblioteca de strings criada automaticamente | pstring_test.cpp |
Obtenha o comprimento da última palavra em uma string. | comprimento_da_última_palavra.cpp |
Encontre a diferença entre duas cordas. A string t é gerada embaralhando aleatoriamente a string s e, em seguida, adicionando mais uma letra em uma posição aleatória. Determine o caractere que é diferente em t | encontrar_diferença.cpp |
Problema | Solução |
---|---|
Imprima o conteúdo da matriz em ordem espiral | matriz_espiral_print.cpp |
Dada uma matriz M x N, gire-a em R rotações no sentido anti-horário e mostre a matriz resultante. | girar_matriz.cpp |
Girar uma matriz por r elementos (esquerda ou direita) | array_rotation.cpp |
Dada uma matriz de números inteiros repetidos/não repetidos, determine o primeiro int não repetitivo nesta matriz | first_non_repeating_int.cpp |
Em Quantumland, existem n cidades numeradas de 1 a n. Aqui, ci denota a i- ésima cidade. Existem n-1 estradas em Quantumland. Aqui, ci e ci +1 têm uma estrada bidirecional entre eles para cada i < n. Há um boato de que Flatland vai atacar Quantumland, e a rainha quer manter sua terra segura. A estrada entre ci e ci +1 é segura se houver um guarda em ci ou ci +1 . A rainha já colocou alguns guardas em algumas cidades, mas não tem certeza se serão suficientes para manter as estradas seguras. Ela quer saber o número mínimo de novos guardas que precisa contratar. Veja os comentários na solução para detalhes de entrada/saída. | save_quantamland.cpp |
Você recebe um número inteiro N. Encontre os dígitos neste número que dividem exatamente N (divisão que deixa 0 como resto) e exiba sua contagem. Para N=24, existem 2 dígitos (2 e 4). Ambos os dígitos dividem exatamente 24. Portanto, nossa resposta é 2. Veja mais detalhes no comentário do cabeçalho do arquivo de solução. | encontrarDigits.cpp |
Criptografe e descriptografe um texto usando Cifra de César. | caeser_cipher.cpp |
Criptografe e descriptografe um texto usando a cifra de Vigenère. | vigenere_cipher.cpp |
Gere números binários entre 1 e N com eficiência. | n_binary.cpp |
Implementar função de potência | power_function.cpp |
Problema | Solução |
---|---|
Imprima todas as permutações de uma string. Exemplo: As permutações de ABC são ABC, ACB, BCA, BAC, CAB, CBA | string_permutações.cpp |
Algoritmo euclidiano para encontrar o máximo divisor comum de dois números. (Iterativo e recursivo) | gcd.cpp |
Implemente pow(x,y) usando a abordagem de dividir e conquistar. Tente implementá-lo em O(logn) | pow.cpp |
Calcule o fatorial de um número grande, digamos 100 (terá 158 dígitos) | factorial_of_large_num.cpp |
Gere todas as palavras possíveis a partir de um número digitado em um teclado móvel tradicional | telefone_dígitos.cpp |
Dada uma representação de string de um número, remova n caracteres da string de forma que a representação do número seja a menor possível. | menor_número_possível.cpp |
Detecte se um número é um número feliz. Um número é um número feliz se a sequência de operações em que o número é substituído pela soma do quadrado de seus dígitos leva eventualmente a 1. Um número não é um número feliz se estivermos em um loop infinito quando as operações acima forem executadas. | número_feliz.cpp |
Problema | Solução |
---|---|
Temos uma série de n cotações diárias de preços de uma ação. Precisamos calcular o intervalo do preço das ações para todos os n dias. O intervalo do i-ésimo dia é definido como o número máximo de dias consecutivos em que o preço da ação foi menor ou igual ao i-ésimo dia. Para cotações de ações {100, 60, 70, 65, 80, 85} o intervalo será {1, 1, 2, 1, 4, 5}. O intervalo para o dia 1 é sempre 1, agora para o dia 2 o estoque está em 60, e não há nenhum dia anterior quando o estoque era inferior a 60. Portanto, o intervalo permanece 1. Para o dia 3, o preço do estoque é 70, então seu intervalo é 2, como no dia anterior era 60 e assim por diante. | stock_span_problem.cpp |
Dada uma expressão infixa, converta-a em uma expressão pós-fixada, Exemplo (A+B)*C --> AB+C* | infix_to_postfix.cpp |
Dada uma string contendo apenas os caracteres '(', ')', '{', '}', '[' e ']', determine se a string de entrada é válida. Os colchetes devem fechar na ordem correta, "( )" e "()[]{}" são todos válidos, mas "(]" e "([)]" não são. | valid_parenthesis.cpp |
Problema | Solução |
---|---|
Dado um vetor ordenado, retorne o primeiro índice da ocorrência de um valor no vetor, se o número não existir, retorne -1 | primeira_ocorrência_binary_search.cpp |
Encontre o primeiro elemento repetido em uma matriz de inteiros. Dado um array de inteiros, encontre o primeiro elemento repetido nele. Precisamos encontrar o elemento que ocorre mais de uma vez e cujo índice de primeira ocorrência é menor. | primeiroRepeatingElement.cpp |
Dada uma lista de inteiros não classificados, A={a 1 ,a 2 ,…,a N }, Encontre o par de elementos que tem a menor diferença absoluta entre eles? Se houver vários pares, encontre todos eles. | números_mais próximos.cpp |
Dado um array classificado, determine o índice do ponto fixo neste array. Se o array não tiver um ponto fixo, retorne -1. Uma matriz tem um ponto fixo quando o índice do elemento é igual ao índice, ou seja, i == arr[i], Complexidade de tempo esperada O (logn) | pontofixo.cpp |
Encontre o elemento máximo em uma matriz que primeiro aumenta e depois diminui. Entrada: arr[] = {8, 10, 20, 80, 100, 200, 400, 500, 3, 2, 1}, saída: 500. A matriz também pode aumentar ou diminuir estritamente. A complexidade do ExpectedTime é O (logn). | encontrar Máximo.cpp |
Dado um array de inteiros positivos e/ou negativos, encontre um par no array cuja soma seja mais próxima de 0. | findClosestPairToZero.cpp |
Numeros, o Artista, tinha duas listas A e B, de modo que B era uma permutação de A. Numeros tinha muito orgulho dessas listas. Infelizmente, ao transportá-los de uma exposição para outra, alguns números foram deixados de fora de A. Você consegue encontrar os números que faltam? Notas:
| números perdidos.cpp |
Encontre o par mais próximo de duas matrizes classificadas. Dados dois arrays ordenados e um número x, encontre o par cuja soma é mais próxima de x e o par tem um elemento de cada array. Recebemos duas matrizes ar1[0…m-1] e ar2[0..n-1] e um número x, precisamos encontrar o par ar1[i] + ar2[j] tal que o valor absoluto de (ar1 [i] + ar2[j] – x) é mínimo. | mais próximoPairSorted.cpp |
Dado um array A de n elementos, encontre três índices i, j e k tais que A[i]^2 + A[j]^2 = A[K]^2. O(n2) complexidade de tempo e O(1) complexidade de espaço | somaquadrada.cpp |
Dado um array não classificado arr[0..n-1] de tamanho n, encontre o subarray de comprimento mínimo arr[s..e] tal que a classificação deste subarray faça com que todo o array seja classificado. | minLengthUnsortedArray.cpp |
Encontre o número que falta na progressão aritmética | faltandoNumber2.cpp |
Encontre os elementos comuns em 3 vetores classificados | commonIn3Arrays.cpp |
Encontre todos os pares com uma determinada soma em uma matriz/vetor não classificado | encontrar_pares_com_soma.cpp |
Dado um array, encontre o elemento de pico nele. Um elemento de pico é um elemento maior que seus vizinhos. | pico_element.cpp |
Dado um array classificado de inteiros não negativos distintos, encontre o menor elemento ausente nele. | menor_missing.cpp |
Mova todos os zeros do vetor para o final | move_zeros.cpp |
Problema | Solução |
---|---|
Profundidade da primeira travessia de um gráfico | dfsDemo.cpp |
Amplitude da primeira travessia de um gráfico | bfsDemo.cpp |
calcule a distância mais curta da posição inicial (Nó S) para todos os outros nós no gráfico usando o algoritmo Dijkstra. | dijkstra-shortest-reach.cpp |
Calcule o peso total da árvore geradora mínima de um determinado gráfico (soma dos pesos das arestas que forma o MST) usando o algoritmo de Prim | primsMST.cpp |
Imprima a árvore de abrangência mínima (MST) de um determinado gráfico usando o algoritmo de Kruskal. | kruskalMST.cpp |
Crie um programa para gerar uma codificação Huffman para cada caractere como uma tabela. | huffman_encoding.cpp |
Pesquise uma determinada palavra em um quadro 2D contendo letras. A palavra pode ser construída percorrendo sequencialmente células horizontais ou verticais adjacentes. Em uma sequência para formar uma palavra, a letra na mesma posição não pode ser usada mais de uma vez. (Verifique o topo do arquivo para exemplos.) | grid_word_search.cpp |
Dada uma tela 2D, localização do pixel e novo valor da cor a ser preenchida, substitua a cor do pixel e todos os pixels adjacentes (acima, abaixo, esquerda, direita) da mesma cor pela nova cor. Isso é o mesmo que preencher (lembre-se do símbolo do balde) uma região no MS-PAINT. | inundação_fill.cpp |
Problema | Solução |
---|---|
Dadas duas matrizes de inteiros, A e B, cada uma contendo N inteiros. Você é livre para permutar a ordem dos elementos nas matrizes. Existe uma permutação A', B' possível de A e B, tal que, A' i +B' i ≥ K para todo i, onde A' i denota o i- ésimo elemento na matriz A' e B' i denota i- ésimo elemento da matriz B'. | dois_arrays.cpp |
John está recebendo ordens. O i -ésimo pedido é feito pelo i- ésimo cliente naquele momento e leva um tempo para ser processado. Qual é a ordem em que os clientes receberão seus pedidos? (veja mais detalhes nos comentários das soluções) | pedidos_pedido.cpp |
Problema | Solução |
---|---|
Você recebe uma sequência de dígitos (por exemplo, "1234", "567" etc.), fornece todas as combinações possíveis de letras que poderíamos gerar a partir dessa sequência de dígitos, com base no mapeamento que vemos no teclado de discagem do telefone/móvel. Se você digitou SMS em telefones antigos, você saberia. Por exemplo, "1" é mapeado para "abc", 2 é mapeado para "def". Você pode consultar a imagem..
| dialpad_combinations.cpp |
Implemente a usinagem de padrões curinga com suporte para '?' &' '.
| wild_card_matching.cpp |
Dado um quadro 2D e uma lista de palavras de um dicionário, encontre todas as palavras possíveis no quadro da lista. (Verifique exemplo na solução) | word_search.cpp |
Problema | Solução |
---|---|
Dado um array inteiro classificado sem duplicatas, retorne o resumo de seus intervalos. Por exemplo, dado [0,1,2,4,5,7], retorne ["0->2","4->5","7"]. | resumo_intervalos.cpp |
Dada uma matriz 2D, com as seguintes propriedades
| search2DII.cpp |
Dada uma matriz inteira não classificada, encontre o primeiro número inteiro positivo ausente. Exemplo: [1,2,0] deve retornar 3 e [3,4,-1,1] deve retornar 2. Complexidade de tempo esperada O(n) e solução devem usar espaço constante | primeiroMissingPositiveNum.cpp |
Dado um array não classificado de inteiros, encontre o comprimento da sequência de elementos consecutivos mais longa. Por exemplo: Dado [100, 4, 200, 1, 3, 2]. A sequência de elementos consecutivos mais longa é [1, 2, 3, 4]. Retorne seu comprimento: 4. O algoritmo deve ser executado em complexidade O(n). | mais longoConsecutiveSeq.cpp |
Dadas duas matrizes de números inteiros classificadas nums1 e nums2, mescle nums2 em nums1 como uma matriz classificada. Você pode assumir que nums1 tem espaço suficiente (tamanho maior ou igual a m + n) para conter elementos adicionais de nums2. O número de elementos inicializados em nums1 e nums2 são m e n respectivamente. | mesclarArrays.cpp |
Dada uma matriz de números inteiros não negativos, você está inicialmente posicionado no primeiro índice da matriz. Cada elemento da matriz representa o comprimento máximo do salto naquela posição. Determine se você consegue alcançar o último índice. Por exemplo:
| jumpGame.cpp |
Dado um número inteiro positivo, retorne o título da coluna correspondente conforme aparece em uma planilha do Excel. Por exemplo 1 -> A, 2 -> B,...26 -> Z, 27 -> AA, 28 -> AB, ...705 -> AAC | excelColSheetTitle.cpp |
Dado um array nums, escreva uma função para mover todos os 0 para o final dele, mantendo a ordem relativa dos elementos diferentes de zero. Por exemplo, dado nums = [0, 1, 0, 3, 12], depois de chamar sua função, nums deve ser [1, 3, 12, 0, 0]. | moveZeroes.cpp |
Dado um array de inteiros, descubra se o array contém alguma duplicata. A função deve retornar verdadeiro se algum valor aparecer pelo menos duas vezes no array e deve retornar falso se cada elemento for distinto. | contémDuplicate.cpp |
Dada uma lista, gire a lista para a direita em k casas, onde k é não negativo. Por exemplo:
| girarList.cpp |
Dadas duas palavras palavra1 e palavra2, encontre o número mínimo de etapas necessárias para converter palavra1 em palavra2. (cada operação é contada como 1 etapa). Você tem as seguintes 3 operações permitidas em uma palavra:
| editarDistance.cpp |
Dada uma árvore binária, preencha cada próximo ponteiro para apontar para seu próximo nó direito. Se não houver próximo nó à direita, o próximo ponteiro deverá ser definido como NULL. Inicialmente, todos os próximos ponteiros são definidos como NULL. Você só pode usar espaço extra constante. Você pode assumir que é uma árvore binária perfeita (ou seja, todas as folhas estão no mesmo nível e cada pai tem dois filhos). | connectNextPointers.cpp |
Dados n pares de parênteses, escreva uma função para gerar todas as combinações de parênteses bem formados. Por exemplo, dado n = 3, um conjunto de soluções é "((()))", "(()())", "(())()", "()(())", "( )()()" | gerar_parênteses.cpp |
Dado um array contendo n números distintos retirados de 0, 1, 2, ..., n, encontre aquele que está faltando no array. Por exemplo, Dado nums = [0, 1, 3] retorne 2. | número_ausente.cpp |
Suponha que uma matriz classificada seja girada em algum pivô desconhecido para você de antemão. (ou seja, 0 1 2 4 5 6 7 pode se tornar 4 5 6 7 0 1 2). Encontre o elemento mínimo. Você pode assumir que não existe duplicata na matriz. | find_min_rotated.cpp |
Dado um array S de n inteiros, encontre três inteiros em S tais que a soma seja mais próxima de um determinado número, alvo. Retorne a soma dos três inteiros. Você pode assumir que cada entrada teria exatamente uma solução. | trêsSumClosest.cpp |
Dados n inteiros não negativos a 1 , a 2 , ..., a n , onde cada um representa um ponto na coordenada (i, a i ). N linhas verticais são desenhadas de modo que as duas extremidades da linha i estejam em (i, a i ) e (i, 0). Encontre duas linhas que, juntamente com o eixo x, formem um recipiente, de modo que o recipiente contenha mais água. Nota: Você não pode inclinar o recipiente. | maxArea.cpp |
Dada uma árvore binária contendo apenas dígitos de 0 a 9, cada caminho raiz-folha pode representar um número. Um exemplo é o caminho raiz-folha 1->2->3 que representa o número 123. Encontre a soma total de todos os números raiz-folha. Exemplo em comentários da solução | sumRootToLeafNumbers.cpp |
Digamos que você tenha uma matriz cujo i-ésimo elemento é o preço de uma determinada ação no dia i. Se você só pudesse concluir no máximo uma transação (ou seja, comprar uma e vender uma ação), crie um algoritmo para encontrar o lucro máximo. | maxProfitStock.cpp |
Dada a grade amxn preenchida com números não negativos, encontre um caminho do canto superior esquerdo para o canto inferior direito que minimize a soma de todos os números ao longo de seu caminho. Nota: Você só pode mover para baixo ou para a direita a qualquer momento. | minPath.cpp |
Conte o número de números primos menor que um número não negativo, n. | contagemPrimes.cpp |
Encontre todas as combinações possíveis de k números que somam um número n, visto que apenas números de 1 a 9 podem ser usados e cada combinação deve ser um conjunto único de números. Certifique-se de que os números do conjunto sejam classificados em ordem crescente. Exemplo: para k = 3, n = 9 o resultado seria [[1,2,6], [1,3,5], [2,3,4]], da mesma forma para k = 3, n = 7, resultado seria [[1,2,4]]. | combinaçãoSum3.cpp |
Dado um número inteiro não negativo, adicione repetidamente todos os seus dígitos até que o resultado tenha apenas um dígito. Por exemplo: Dado num = 38, o processo é como: 3 + 8 = 11, 1 + 1 = 2. Como 2 tem apenas um dígito, retorne-o. Acompanhamento: Você poderia fazer isso sem nenhum loop/recursão no tempo de execução O(1)? | addDigits.cpp |
Dada uma matriz com valores de célula 0 ou 1. Encontre o comprimento do caminho mais curto de (a1, b1) a (a2, b2), de modo que o caminho só possa ser construído através de células que tenham valor 1 e você só possa viajar em 4 direções possíveis, ou seja, esquerda, direita, para cima e para baixo. | caminho_mais curto_labirinto.cpp |
A distância de Hamming entre dois inteiros é o número de posições nas quais os bits correspondentes são diferentes. Dados dois inteiros x e y, calcule a distância de Hamming. | hamming_distance.cpp |
Dadas duas árvores binárias e imagine que quando você coloca uma delas para cobrir a outra, alguns nós das duas árvores ficam sobrepostos enquanto os outros não. Você precisa mesclá-los em uma nova árvore binária. A regra de mesclagem é que, se dois nós se sobrepuserem, some os valores dos nós como o novo valor do nó mesclado. Caso contrário, o nó NOT null será usado como o nó da nova árvore. | mesclar_trees.cpp |
Escreva uma função que receba uma string como entrada e inverta apenas as vogais de uma string. | vogais_reversas.cpp |
Dada uma string, classifique-a em ordem decrescente com base na frequência dos caracteres. Por exemplo:
| sortCharByFrequency.cpp |
Produto de array exceto self. Dado um array de n inteiros onde n > 1, nums, retorne uma saída de array tal que output[i] seja igual ao produto de todos os elementos de nums, exceto nums[i]. | produto_exceto_self.cpp |
Dado um array classificado, remova as duplicatas e retorne o novo comprimento. Não importa o que está na matriz além do tamanho dos elementos exclusivos. Complexidade O(1) de espaço e O(n) tempo esperada. | remove_duplicados.cpp |
Conte o número de ilhas em uma grade. Dada uma grade representando 1 como corpo terrestre e 0 como corpo d'água, determine o número de ilhas (mais detalhes nos comentários do problema) | contagem_ilhas.cpp |
Encontre a mediana de um fluxo de dados. Projete uma estrutura de dados que suporte addNum para adicionar um número ao fluxo e findMedian para retornar a mediana dos números atuais vistos até agora. Além disso, se a contagem de números for par, retorne a média dos dois elementos do meio; caso contrário, retorne a mediana. | median_stream.cpp |
Remova o número mínimo de parênteses inválidos para tornar a string de entrada válida. Retorne todos os resultados possíveis. Nota: A sequência de entrada pode conter letras que não sejam os parênteses (e) | Remone_invalid_parenthesis.cpp |
Dada uma matriz e um valor, remova todas as instâncias desse valor no local e retorne o novo comprimento. Não aloque espaço extra para outra matriz, você deve fazer isso modificando a matriz de entrada no local com a memória extra O (1). A ordem dos elementos pode ser alterada. Não importa o que você sai além do novo comprimento. | Remone_element.cpp |
Encontre a interseção de dois matrizes/vetores, dado que dois vetores encontram o resultado de sua interação. O resultado deve conter apenas caracteres únicos e pode estar em qualquer ordem | Intersection_of_array.cpp |
Dado um padrão e um str str, encontre se o STR segue o mesmo padrão. Aqui seguem uma partida completa, de modo que existe uma bijeção entre uma carta em padrão e uma palavra não vazia em STR. exemplo: | |
Pattern = "abba", str = "cachorro gato de gato" deve retornar verdadeiro. | |
Pattern = "abba", str = "peixe de gato de cachorro" deve retornar falso. | |
Pattern = "aaaa", str = "cachorro de gato de cachorro" deve retornar falso. | |
Pattern = "abba", str = "cachorro cachorro cachorro" deve retornar falso. | word_pattern.cpp |
Você recebe um vetor de números, onde cada número representa | |
Preço de uma ação no dia. Se você tiver permissão para concluir apenas | |
Uma transação por dia (ou seja, compre uma e venda uma ação), design | |
um algoritmo para encontrar o lucro máximo. | best_time_to_buy_sell.cpp |
Dada uma frase, reverta a ordem dos caracteres em cada palavra dentro de uma frase, enquanto ainda preservando o espaço em branco e a ordem inicial da palavra. | |
Exemplo: | |
Entrada: ela adora chocolate | |
Saída: ehs sevol etalocohc | reverse_words.cpp |