【Leetcode】90. 子集 II

51 阅读1分钟

leetcode-90.png

题目简述:在给定的nums数组里面,找出所有可能的组合,组合的长度不限,但是不能重复
去重这里,很多地方都有用到就是利用下面这段代码来去重
进阶47题

if (i > start && nums[i] === nums[i - 1]) continue

题解

var subsetsWithDup = function (nums) {
    let res = []
    nums.sort((a, b) => a - b)
    var backtrack = function (start, one) {
        res.push([...one])
        for (let i = start; i < nums.length; ++i) {
            // 去重
            if (i > start && nums[i] === nums[i - 1]) continue
            one.push(nums[i])
            backtrack(i + 1, one)
            one.pop()
        }
    }
    backtrack(0, [])
    return res
};