Menu
CoddyTech

Permutations

Vous recevez une liste nums d’entiers distincts. Renvoyez tous les ordres possibles de ces valeurs, chacun sous forme de liste utilisant chaque valeur exactement une fois, de sorte que n valeurs donnent n! ordres. Énumérez-les dans l’ordre lexicographique : comparez deux ordres position par position et laissez leur première différence les départager. Pour [1, 2, 3], cela place [1, 2, 3] en premier et [3, 2, 1] en dernier.

Fonction

permute(nums: integer-array) → integer-2d-array
numsinteger-array
les valeurs, toutes différentes, dans n’importe quel ordre
Renvoieinteger-2d-array
tous les ordres possibles des valeurs, listés dans l’ordre lexicographique

Contraintes

  • 1 ≤ nums.length ≤ 6
  • -10 ≤ nums[i] ≤ 10
  • Toutes les valeurs de nums sont différentes.
  • nums peuvent être dans n’importe quel ordre.

Exemples

Entrée
nums = [3, 1, 2]
Sortie
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Explication
Trois valeurs ont 3! = 6 ordres possibles. Une fois triées, les valeurs sont 1, 2, 3, donc les ordres qui commencent par 1 viennent en premier, et [1, 2, 3] vient avant [1, 3, 2] parce que 2 est plus petit que 3 à la deuxième position. L’ordre des valeurs d’entrée n’a pas d’importance.

lock icon+13 tests cachés à la soumission

challenge icon

Pour aller plus loin

Étant donné un ordre, peux-tu produire le suivant dans l’ordre lexicographique, sur place, en O(n) et avec un espace supplémentaire de O(1) ?

Réinitialiser le code
def permute(nums):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

nums = [3, 1, 2]

Attendu

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