Menu
CoddyTech

Permutations

ŚrednieNawrotypython iconjava iconcpp iconc iconjs icon+10

Otrzymujesz listę nums zawierającą różne liczby całkowite. Zwróć wszystkie uporządkowania tych wartości, każde jako listę, która zawiera każdą wartość dokładnie raz, więc n wartości daje n! uporządkowań. Wypisz je w porządku leksykograficznym: porównaj dwa uporządkowania pozycja po pozycji i niech rozstrzygnie pierwsza różnica. Dla [1, 2, 3] oznacza to, że [1, 2, 3] jest pierwsze, a [3, 2, 1] ostatnie.

Funkcja

permute(nums: integer-array) → integer-2d-array
numsinteger-array
wartości, wszystkie różne, w dowolnej kolejności
Zwracainteger-2d-array
każde uporządkowanie wartości, wymienione w kolejności leksykograficznej

Ograniczenia

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

Przykłady

Wejście
nums = [3, 1, 2]
Wyjście
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Wyjaśnienie
Trzy wartości mają 3! = 6 uporządkowań. Po posortowaniu wartości to 1, 2, 3, więc najpierw występują uporządkowania zaczynające się od 1, a [1, 2, 3] występuje przed [1, 3, 2], ponieważ 2 jest mniejsze od 3 na drugiej pozycji. Kolejność danych wejściowych nie ma znaczenia.

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

challenge icon

Pytanie dodatkowe

Mając jedno uporządkowanie, czy potrafisz wygenerować następne w porządku leksykograficznym w miejscu, w czasie O(n) i przy użyciu O(1) dodatkowej pamięci?

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

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

nums = [3, 1, 2]

Oczekiwane

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