Menu
CoddyTech

Permutations

MedioBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Recibes una lista nums de enteros distintos. Devuelve todos los ordenamientos de esos valores, cada uno como una lista que usa cada valor exactamente una vez, de modo que n valores den n! ordenamientos. Enuméralos en orden lexicográfico: compara dos ordenamientos posición por posición y deja que decida la primera diferencia. Para [1, 2, 3], eso pone [1, 2, 3] primero y [3, 2, 1] al final.

Función

permute(nums: integer-array) → integer-2d-array
numsinteger-array
los valores, todos diferentes, en cualquier orden
Devuelveinteger-2d-array
cada ordenación de los valores, enumeradas en orden lexicográfico

Restricciones

  • 1 ≤ nums.length ≤ 6
  • -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, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Explicación
Tres valores tienen 3! = 6 ordenaciones. Ordenados, los valores son 1, 2, 3, así que primero van las ordenaciones que empiezan con 1, y [1, 2, 3] va antes que [1, 3, 2] porque 2 es menor que 3 en la segunda posición. El orden de entrada no importa.

lock icon+13 pruebas ocultas al enviar

challenge icon

Para ir más allá

Dado un ordenamiento, ¿puedes producir el siguiente en orden lexicográfico in situ, en O(n) tiempo y con O(1) espacio adicional?

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

Caso 1

Caso 2

Caso 3

Entrada

nums = [3, 1, 2]

Esperado

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