Skip to content

permutations

生成数组的所有可能排列,使用回溯算法实现。

输入配置

执行过程

步骤 1 / 38
开始回溯生成全排列
当前路径
可选元素
1
2
3
已使用
可选择

算法说明

全排列:使用回溯算法,维护已使用标记,每次选择未使用的元素加入路径,递归完成后回溯。时间复杂度O(n! × n)。

函数签名

typescript
function permutations(nums: number[]): number[][]

参数

参数名类型必填说明
numsnumber[]不含重复数字的数组

返回值

类型说明
number[][]所有可能的排列

工作原理

  1. 初始化: 创建used数组标记元素是否被使用
  2. 回溯递归: 对每个未使用的元素
    • 选择该元素加入路径
    • 标记为已使用
    • 递归处理剩余元素
    • 撤销选择(回溯)
  3. 终止条件: 当路径长度等于数组长度时,得到一个完整排列
  4. 返回结果: 返回所有排列的集合

时间复杂度: O(n! × n)
空间复杂度: O(n)