Menu
CoddyTech

Combination Sum

MédioBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Você recebe uma lista candidates de números inteiros positivos distintos e um número inteiro positivo target. Encontre todas as combinações de candidatos cujos valores somam exatamente target, podendo usar cada candidato quantas vezes quiser. Duas combinações são iguais quando usam os mesmos valores o mesmo número de vezes, portanto [2, 3, 3] e [3, 2, 3] contam como uma só.

Retorne cada combinação com seus valores em ordem crescente e as combinações em ordem lexicográfica: compare duas combinações valor por valor, da esquerda para a direita, e aquela com o menor valor na primeira diferença vem primeiro.

Função

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
os diferentes valores que você pode usar, em qualquer ordem, quantas vezes quiser
targetinteger
o total de cada combinação deve atingir exatamente
Retornainteger-2d-array
todas as combinações cuja soma é igual ao alvo, cada uma em ordem crescente, listadas em ordem lexicográfica

Restrições

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • Todos os valores em candidates são diferentes, sem uma ordem específica.
  • Pelo menos uma combinação alcança target, e no máximo 150 o fazem.

Exemplos

Entrada
candidates = [6, 2, 3]target = 8
Saída
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
Explicação
Quatro 2s formam 8, assim como 2 + 3 + 3 e 2 + 6. Os três começam com 2, então o segundo valor define a ordem: 2, depois 3 e, em seguida, 6. Sem um 2, você só tem 3s e 6s, e qualquer combinação deles é múltipla de 3, o que 8 não é.

lock icon+12 testes ocultos ao enviar

challenge icon

Para ir além

Cada candidato pode agora ser usado no máximo uma vez, e candidates pode conter valores repetidos. Como você altera a busca para que nenhuma combinação apareça duas vezes?

Redefinir código
def combinationSum(candidates, target):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

candidates = [6, 2, 3]
target = 8

Esperado

[[2, 2, 2, 2], [2, 3, 3], [2, 6]]