46. 全排列
- 题号:46
- 来源:LeetCode
- 难度:中等
- 标签:
回溯排列 - 语言:TypeScript
- 解法:1 个
- 作者:lmliheng
- 最近更新:2026-09-27
TypeScript · O(n*n!) 时间 · O(n) 空间 · 更新于 2026-09-27
回溯配used数组,叶子处深拷贝收集
typescript
/**
* @difficulty medium
* @tags 回溯,排列
* @time O(n*n!)
* @space O(n)
* @note 回溯配used数组,叶子处深拷贝收集
* @46. 全排列
*/
function permute(nums: number[]): number[][] {
let n = nums.length
let res: number[][] = []
let used = Array.from({ length: n }, () => false)
const BackTrack = (path: number[]) => {
if (path.length == n) {
res.push([...path])
return
}
for (let i = 0; i < n; i++) {
if (used[i]) {
continue
}
path.push(nums[i])
used[i] = true
BackTrack(path)
path.pop()
used[i] = false
}
}
BackTrack([])
return res
};在 GitHub 上查看题目所在目录:lmliheng/algorithm