090 Subsets II

Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).

Example:

Input: [1,2,2]
Output:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]

Note:

Note: The solution set must not contain duplicate subsets.

解释下题目:

输出所有的不重复子集

1. 在078的基础上修改呗

实际耗时:44ms

public List<List<Integer>> subsetsWithDup(int[] nums) {
        List<List<Integer>> result = new ArrayList<>();
        List<Integer> temp = new ArrayList<>();
        Arrays.sort(nums);
        recursion(result, temp, 0, nums);
        return result;
    }

    public void recursion(List<List<Integer>> result, List<Integer> temp, int start, int[] nums) {
        if (!result.contains(new ArrayList<>(temp))) {
            result.add(new ArrayList<>(temp));
        }
        for (int i = start; i < nums.length; i++) {
            temp.add(nums[i]);
            recursion(result, temp, i + 1, nums);
            temp.remove(temp.size() - 1);
        }
    }
踩过的坑:{4,4,4,1,4} 主要是忘了对数组进行排序

  思路与078一样,只是加了重复判断

时间复杂度O(2^n)
空间复杂度O(1)

2. 在1之上进行修改

实际耗时:3ms

public void recursion2(List<List<Integer>> result, List<Integer> temp, int start, int[] nums) {
        if (start <= nums.length) {
            result.add(temp);
        }
        int i = start;
        while (i < nums.length) {
            temp.add(nums[i]);
            recursion2(result, new ArrayList<>(temp), i + 1, nums);
            temp.remove(temp.size() - 1);
            i++;
            while (i < nums.length && nums[i] == nums[i - 1]) {
                i++;
            }
        }
        return;
    }

  思路其实就是加了一个如果下一个数字和当前的数字一样,就直接跳过。

时间复杂度O(2^n)
空间复杂度O(1)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,845评论 0 13
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,869评论 0 33
  • 儿子今年五岁半,上中班,以前我们都教导他不要跟人打架。即使邻居家弟弟打他了,我们都告诉他不能打弟弟,弟弟还小,其实...
    高高_屋顶的灯阅读 729评论 2 1
  • 姓名:林常庚(365期,乐观3组) 单位:深圳市蔚蓝时代商业管理有限公司海南分公司。 【日精进打卡第93天】 【知...
    常庚_c041阅读 127评论 0 0
  • 这个假期女儿做家务比以前主动了,吃饭前帮忙端饭,饭后主动收拾碗筷,带领弟弟背古诗也很有一套。今天中午下厨炒了两个菜...
    Ai琳琳_六中玩换阅读 171评论 0 1

友情链接更多精彩内容