Menu
CoddyTech

Subsets

On te donne une liste nums d’entiers distincts. Retourne tous ses sous-ensembles, y compris l’ensemble vide et la liste complète : n valeurs donnent 2^n sous-ensembles. Écris chaque sous-ensemble avec ses valeurs en ordre croissant et énumère les sous-ensembles dans l’ordre lexicographique : compare deux sous-ensembles valeur par valeur ; la première différence détermine l’ordre, et un sous-ensemble qui est le préfixe d’un autre vient avant celui-ci. Pour [1, 2], la réponse est [[], [1], [1, 2], [2]].

Fonction

subsets(nums: integer-array) → integer-2d-array
numsinteger-array
les valeurs, toutes différentes, dans n’importe quel ordre
Renvoieinteger-2d-array
chaque sous-ensemble, trié par ordre croissant, énuméré dans l’ordre lexicographique

Contraintes

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

Exemples

Entrée
nums = [3, 1, 2]
Sortie
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
Explication
Une fois triées, les valeurs sont 1, 2, 3, et trois valeurs donnent 2^3 = 8 sous-ensembles. [1, 2] vient avant [1, 2, 3] parce qu’il en est le début, et [1, 2, 3] vient avant [1, 3] parce que 2 est plus petit que 3 à la deuxième position.

lock icon+13 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu produire la même liste sans récursion, en construisant chaque sous-ensemble directement à partir du précédent ?

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

Cas 1

Cas 2

Cas 3

Entrée

nums = [3, 1, 2]

Attendu

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