알고리즘/리트코드

Permutations II

창고 2021. 5. 12. 20:39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var permuteUnique = function (nums) {
    let res = []; let remain = {}; let set = new Set(nums);
    for (let i = 0; i < nums.length; i++) {
        remain[nums[i]] = remain[nums[i]] + 1 || 1;
    }
 
    function permute(depth, getArray, getRemain) {
        if (depth === nums.length) {
           res.push(getArray); ❓ getArray.slice()로 해야함
            return;
        } else {
            for (let num of set) {
                if (remain[num]) {
                    getArray.push(num);
                    getRemain[num]--;
 
                    permute(depth + 1, getArray, getRemain);
 
                    getArray.pop();
                    getRemain[num]++;
                }
            }
        }
    }
 
    permute(0, [], remain);
 
    return res;
};
 
console.log(permuteUnique([112]));
cs