Skip to content

Commit 1992b05

Browse files
committed
46.ts 全排列, 回溯算法
1 parent 6583918 commit 1992b05

File tree

1 file changed

+43
-26
lines changed

1 file changed

+43
-26
lines changed

46.ts

+43-26
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,55 @@
55
*/
66

77
// @lc code=start
8+
// function permute(nums: number[]): number[][] {
9+
// const result: number[][] = []
10+
// // 路径
11+
// // const track
12+
// // 选择列表
13+
// // const list
14+
// function backtrack(track: number[], list: number[]) {
15+
// // 终结条件
16+
// if (list.length === 0) {
17+
// result.push([...track])
18+
// return
19+
// }
20+
// // 选择列表
21+
// for (let i = 0; i < list.length; i++) {
22+
// if (track.indexOf(list[i]) > -1) {
23+
// /** 如果已经选择过 */
24+
// continue
25+
// }
26+
// const ele = list[i]
27+
// track.push(ele)
28+
// list.splice(i, 1)
29+
// backtrack(track, list)
30+
// track.pop()
31+
// list.splice(i, 0, ele)
32+
// }
33+
// }
34+
35+
// backtrack([], nums)
36+
// return result
37+
// };
38+
// 记录选择列表
839
function permute(nums: number[]): number[][] {
9-
const result: number[][] = []
10-
// 路径
11-
// const track
12-
// 选择列表
13-
// const list
14-
function backtrack(track: number[], list: number[]) {
15-
// 终结条件
16-
if (list.length === 0) {
17-
result.push([...track])
18-
return
19-
}
20-
// 选择列表
21-
for (let i = 0; i < list.length; i++) {
22-
if (track.indexOf(list[i]) > -1) {
23-
/** 如果已经选择过 */
24-
continue
25-
}
26-
const ele = list[i]
27-
track.push(ele)
28-
list.splice(i, 1)
29-
backtrack(track, list)
30-
track.pop()
31-
list.splice(i, 0, ele)
40+
const res = []
41+
function backtrack(track: number[], options: number[]){
42+
if(options.length === 0){
43+
res.push(track)
3244
}
45+
options.map(o => {
46+
backtrack(track.concat(o), options.filter(i => i!== o))
47+
})
3348
}
3449

3550
backtrack([], nums)
36-
return result
37-
};
51+
return res
52+
}
53+
3854
// @lc code=end
3955

4056

41-
const nums = [1, 2, 3]
57+
// const nums = [1, 2, 3]
58+
const nums = [0]
4259
console.log(permute(nums))

0 commit comments

Comments
 (0)