Menu
CoddyTech

Permutations

MédioBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Você recebe uma lista nums de números inteiros distintos. Retorne todas as ordenações desses valores, cada uma como uma lista que usa cada valor exatamente uma vez, de modo que n valores gerem n! ordenações. Liste-as em ordem lexicográfica: compare duas ordenações posição por posição e deixe a primeira diferença decidir. Para [1, 2, 3], isso coloca [1, 2, 3] primeiro e [3, 2, 1] por último.

Função

permute(nums: integer-array) → integer-2d-array
numsinteger-array
os valores, todos diferentes, em qualquer ordem
Retornainteger-2d-array
todas as ordenações dos valores, listadas em ordem lexicográfica

Restrições

  • 1 ≤ nums.length ≤ 6
  • -10 ≤ nums[i] ≤ 10
  • Todos os valores em nums são diferentes.
  • nums pode vir em qualquer ordem.

Exemplos

Entrada
nums = [3, 1, 2]
Saída
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Explicação
Três valores têm 3! = 6 ordenações. Em ordem crescente, os valores são 1, 2, 3; portanto, as ordenações que começam com 1 vêm primeiro, e [1, 2, 3] vem antes de [1, 3, 2] porque 2 é menor que 3 na segunda posição. A ordem da entrada não importa.

lock icon+13 testes ocultos ao enviar

challenge icon

Para ir além

Dada uma ordenação, você consegue produzir a próxima em ordem lexicográfica no próprio lugar, em tempo O(n) e usando O(1) de espaço extra?

Redefinir código
def permute(nums):
    # Escreva o código aqui
Casos de teste

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]]