Menu
CoddyTech

Permutations

中等回溯python iconjava iconcpp iconc iconjs icon+10

你会得到一个由互不相同的整数构成的列表 nums。返回这些值的所有排列,每个排列都是一个恰好使用每个值一次的列表,因此 n 个值会有 n! 种排列。按字典序列出它们:逐个位置比较两个排列,由第一个不同的位置决定顺序。对于 [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]]
解释
以 1 开头的排列在前,[1, 2, 3] 排在 [1, 3, 2] 前面,因为在第二个位置上,2 比 3 小。输入顺序无关紧要。
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]]