Menu
CoddyTech

Subsets

Otrzymujesz listę nums zawierającą różne liczby całkowite. Zwróć każdy jej podzbiór, włącznie z pustym podzbiorem i całą listą, tak aby n wartości dawało 2^n podzbiorów. Zapisz wartości w każdym podzbiorze w kolejności rosnącej, a podzbiory wypisz w porządku leksykograficznym: porównuj podzbiory wartość po wartości — o kolejności decyduje pierwsza różnica, a podzbiór będący początkiem innego podzbioru występuje przed nim. Dla [1, 2] odpowiedzią jest [[], [1], [1, 2], [2]].

Funkcja

subsets(nums: integer-array) → integer-2d-array
numsinteger-array
wartości, wszystkie różne, w dowolnej kolejności
Zwracainteger-2d-array
każdy podzbiór, każdy posortowany rosnąco, wypisany w porządku leksykograficznym

Ograniczenia

  • 1 ≤ nums.length ≤ 10
  • -10 ≤ nums[i] ≤ 10
  • Wszystkie wartości w nums są różne.
  • nums mogą występować w dowolnej kolejności.

Przykłady

Wejście
nums = [3, 1, 2]
Wyjście
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
Wyjaśnienie
Po posortowaniu wartości to 1, 2, 3, a trzy wartości dają 2^3 = 8 podzbiorów. [1, 2] występuje przed [1, 2, 3], ponieważ jest jego początkiem, a [1, 2, 3] występuje przed [1, 3], ponieważ 2 jest mniejsze od 3 na drugiej pozycji.

lock icon+13 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy potrafisz utworzyć tę samą listę bez rekurencji, budując każdy podzbiór bezpośrednio na podstawie poprzedniego?

Zresetuj kod
def subsets(nums):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

nums = [3, 1, 2]

Oczekiwane

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