Menu
CoddyTech

Combination Sum

MedioBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Tienes una lista candidates de distintos enteros positivos y un entero positivo target. Encuentra todas las combinaciones de candidatos cuya suma sea exactamente target, usando cada candidato tantas veces como quieras. [2, 3, 3] y [3, 2, 3] son la misma combinación.

Devuelve cada combinación en orden ascendente y las combinaciones en orden lexicográfico: en la primera posición donde dos combinaciones difieren, va primero la que tiene el valor menor.

Función

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
los diferentes valores que puedes usar, en cualquier orden y tantas veces como quieras
targetinteger
el total que debe alcanzar exactamente cada combinación
Devuelveinteger-2d-array
todas las combinaciones que suman el objetivo, cada una en orden ascendente, enumeradas en orden lexicográfico

Restricciones

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • Todos los valores de candidates son diferentes, sin ningún orden en particular.
  • Al menos una combinación alcanza target, y como máximo 150 lo hacen.

Ejemplos

Entrada
candidates = [6, 2, 3]target = 8
Salida
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
Explicación
Cuatro 2, 2 + 3 + 3 y 2 + 6 dan 8, ordenados por su segundo valor. Sin un 2, solo quedan 3 y 6, y sus sumas son múltiplos de 3, cosa que 8 no es.
challenge icon

Para ir más allá

Cada candidato ahora puede usarse como máximo una vez, y candidates puede contener valores repetidos. ¿Cómo cambias la búsqueda para que ninguna combinación aparezca dos veces?

Restablecer código
def combinationSum(candidates, target):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

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