Menu
CoddyTech

Permutations

異なる整数のリスト nums が与えられます。それらの値を並べ替えたすべての順序を返してください。それぞれのリストでは各値をちょうど1回ずつ使用するため、n 個の値から n! 通りの順序ができます。辞書順に並べてください。2つの順序を位置ごとに比較し、最初に異なる位置の値で順序を決めます。[1, 2, 3] の場合、[1, 2, 3] が最初になり、[3, 2, 1] が最後になります。

関数

permute(nums: integer-array) → integer-2d-array
numsinteger-array
値はすべて異なり、順序は問いません
戻り値integer-2d-array
値のすべての順序を辞書順に列挙したもの

制約

  • 1 ≤ nums.length ≤ 6
  • -10 ≤ nums[i] ≤ 10
  • すべてのnumsの値は異なります。
  • nums はどのような順序でも構いません。

例

入力
nums = [3, 1, 2]
出力
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
説明
3つの値には3! = 6通りの順序があります。値を並べ替えると1、2、3なので、1で始まる順序が最初に来ます。また、2番目の位置では2が3より小さいため、[1, 2, 3]は[1, 3, 2]より前に来ます。入力の順序は関係ありません。

lock icon提出時に隠しテスト+13件

challenge icon

発展問題

ある順列が与えられたとき、辞書順で次の順列を、O(n) 時間、O(1) の追加領域で、インプレースに生成できますか?

コードをリセット
def permute(nums):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

nums = [3, 1, 2]

期待値

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