Menu
CoddyTech

Subsets

Recibes una lista nums de enteros distintos. Devuelve todos sus subconjuntos, incluido el vacío y la lista completa, de modo que n valores den 2^n subconjuntos. Escribe cada subconjunto con sus valores en orden ascendente y enumera los subconjuntos en orden lexicográfico: compara dos subconjuntos valor por valor; decide la primera diferencia, y si un subconjunto es el comienzo de otro, va antes. Para [1, 2], la respuesta es [[], [1], [1, 2], [2]].

Función

subsets(nums: integer-array) → integer-2d-array
numsinteger-array
los valores, todos distintos, en cualquier orden
Devuelveinteger-2d-array
cada subconjunto, ordenado de menor a mayor y enumerado en orden lexicográfico

Restricciones

  • 1 ≤ nums.length ≤ 10
  • -10 ≤ nums[i] ≤ 10
  • Todos los valores de nums son diferentes.
  • nums puede venir en cualquier orden.

Ejemplos

Entrada
nums = [3, 1, 2]
Salida
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
Explicación
Ordenados, los valores son 1, 2, 3, y tres valores dan 2^3 = 8 subconjuntos. [1, 2] va antes que [1, 2, 3] porque es su inicio, y [1, 2, 3] va antes que [1, 3] porque 2 es menor que 3 en la segunda posición.

lock icon+13 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Puedes generar la misma lista sin recursión, construyendo cada subconjunto directamente a partir del anterior?

Restablecer código
def subsets(nums):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

nums = [3, 1, 2]

Esperado

[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]