90.子集 II

2020-03-09  本文已影响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;
};

复杂度

上一篇下一篇

猜你喜欢

热点阅读