美文网首页
90.子集 II

90.子集 II

作者: 最尾一名 | 来源:发表于2020-03-09 18:04 被阅读0次

    原题

    https://leetcode-cn.com/problems/subsets-ii/

    解题思路

    同 78.子集,使用回溯算法,不过每一次需要跳过重复的元素。

    代码

    /**
     * @param {number[]} nums
     * @return {number[][]}
     */
    var subsetsWithDup = function(nums) {
        const res = [], temp = [], n = nums.length;
        nums = nums.sort((a, b) => a - b);
        const backTrace = (arr, currentStart) => {
            res.push(arr);
            for (let i = currentStart; i < n; ++i) {
                if (i > currentStart && nums[i] === nums[i-1]) continue;
                arr.push(nums[i]);
                backTrace(arr.slice(), i + 1);
                arr.pop();
            }
        }
        backTrace(temp, 0);
        return res;
    };
    

    复杂度

    • 时间复杂度 O(N * 2^N)
    • 空间复杂度 O(2^N)

    相关文章

      网友评论

          本文标题:90.子集 II

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