90. 子集 II

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subsets-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


    // 有重复数字了,排序解决
    // 同一个数字不能多次用
    Stack<Integer> stack = new Stack<>();
    List<List<Integer>> ret = new ArrayList<>();
    public List<List<Integer>> subsetsWithDup(int[] nums) {

        Arrays.sort(nums);
        dfs(nums,0);

        return ret;

    }

    public void dfs(int[] nums, int index) {
        ret.add(new ArrayList<>(stack));

        if(index == nums.length) {
            return;
        }

        for(int i=index;i<nums.length;i++) {
            // 解决重复的组合
            if(i-1>=index && nums[i-1] == nums[i]) {
                continue;
            }
 
            stack.push(nums[i]);
            dfs(nums,i+1);
            stack.pop();
        }
    }

posted @ 2022-02-28 14:38  一颗青菜  阅读(3)  评论(0)    收藏  举报