# 练习

# LeetCode:46. 全排列

var permute = function (nums) {
    const res = [];
    const backtrack = (path) => {
        if (path.length === nums.length) {
            res.push(path)
            return;
        }
        nums.forEach((n => {
            if (path.includes(n)) {
                return;
            }
            backtrack(path.concat(n))
        }))
    }
    backtrack([])
    return res;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# LeetCode:78. 子集

var subsets = function (nums) {
    const res = [];
    const backtrack = (path, l, start) => {
        if(path.length == l){
            res.push(path)
            return
        }
        for (let i = start; i < nums.length; i++) {
            backtrack(path.concat(nums[i]), l, i+1)
        }
    }
    for (let i = 0; i <= nums.length; i++) {
        backtrack([], i, 0)
    }

    return res
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17