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 cuja soma seja exatamente target, usando cada candidato quantas vezes quiser. [2, 3, 3] e [3, 2, 3] são a mesma combinação.

Retorne cada combinação em ordem crescente e as combinações em ordem lexicográfica: na primeira posição em que duas combinações diferem, aquela com o menor valor 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 e quantas vezes quiser
targetinteger
o total de cada combinação deve chegar exatamente
Retornainteger-2d-array
todas as combinações cuja soma seja igual ao alvo, cada uma em ordem crescente e 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 combinações 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, 2 + 3 + 3 e 2 + 6 resultam em 8, ordenados pelo segundo valor. Sem um 2, restam apenas 3s e 6s, e suas somas são múltiplos de 3, o que 8 não é.
challenge icon

Para ir além

Cada candidato pode 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

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

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