permutations
生成数组的所有可能排列,使用回溯算法实现。
输入配置
执行过程
开始回溯生成全排列
当前路径
空
可选元素
1
2
3
已使用
可选择
算法说明
全排列:使用回溯算法,维护已使用标记,每次选择未使用的元素加入路径,递归完成后回溯。时间复杂度O(n! × n)。
函数签名
typescript
function permutations(nums: number[]): number[][]参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
nums | number[] | 是 | 不含重复数字的数组 |
返回值
| 类型 | 说明 |
|---|---|
number[][] | 所有可能的排列 |
工作原理
- 初始化: 创建used数组标记元素是否被使用
- 回溯递归: 对每个未使用的元素
- 选择该元素加入路径
- 标记为已使用
- 递归处理剩余元素
- 撤销选择(回溯)
- 终止条件: 当路径长度等于数组长度时,得到一个完整排列
- 返回结果: 返回所有排列的集合
时间复杂度: O(n! × n)
空间复杂度: O(n)