美文网首页
JavaScript - 全排列2(回溯法)

JavaScript - 全排列2(回溯法)

作者: ElricTang | 来源:发表于2020-07-28 10:27 被阅读0次

    给定一个可包含重复数字的序列,返回所有不重复的全排列。
    示例:

    输入: [1,1,2]
    输出:
    [
     [1,1,2],
     [1,2,1],
     [2,1,1]
    ]
    

    完整代码:

    /**
     * @param {number[]} nums
     * @return {number[][]}
     */
    var permuteUnique = function(nums) {
        let arr = nums.sort((m, n)=> m - n);
        let res = [];
    
        function def(n, path) {
            for (let i = 0; i < n.length; i++) {
                let curPath = [...path, n[i]];
                let copy = [...n];
    
                copy.splice(i, 1);
                if (i > 0 && n[i - 1] === n[i]) continue;
                if (curPath.length === arr.length) res.push(curPath);
                if (copy.length > 0) def(copy, curPath);
            }
        }
    
        def(arr, []);
        return res;
    };
    

    相关文章

      网友评论

          本文标题:JavaScript - 全排列2(回溯法)

          本文链接:https://www.haomeiwen.com/subject/uoaxrktx.html