[Leetcode 90]求含有重复数的子集 Subset II

【题目】

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

Note: The solution set must not contain duplicate subsets.

【思路】

注意sort,使得判断临接元素是否相邻。

与leetcode78类似,多了一个重复数判断条件

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

【代码】

public class Solution {
    public List<List<Integer>> subsetsWithDup(int[] nums) {
        List<List<Integer>> ans=new ArrayList<>();
        List<Integer> tmp=new ArrayList<>();
        Arrays.sort(nums);
        fun(nums,ans,tmp,0);
        return ans;
    }

    public void fun(int nums[],List<List<Integer>> ans,List<Integer> tmp,int flag){
        ans.add(new ArrayList<>(tmp));
        for(int i=flag;i<nums.length;i++){
            if(i>flag&&nums[i-1]==nums[i])
                continue;
            tmp.add(nums[i]);
            fun(nums,ans,tmp,i+1);
            tmp.remove(tmp.size()-1);
        }
    }
}

原文地址:https://www.cnblogs.com/inku/p/9976099.html

时间: 2024-10-08 16:06:31

[Leetcode 90]求含有重复数的子集 Subset II的相关文章

Leetcode:Subsets 求数组的所有子集

Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example, If S = [1,2,3], a solution is: [ [3], [1], [2], [1,2,3], [

[Leetcode] subsets 求数组所有的子集

Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example,If S =[1,2,3], a solution is: [ [3], [1], [2], [1,2,3], [1,

LeetCode --- 90. Subsets II

题目链接:Subsets II Given a collection of integers that might contain duplicates, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example, If S = [1,2,2]

Subset II leetcode java

题目: Given a collection of integers that might contain duplicates, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example, If S = [1,2,2], a solution

NYOJ 90 —— 求n划分为若干个正整数的划分个数

整数划分 时间限制:3000 ms  |  内存限制:65535 KB 描述 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1. 正整数n的这种表示称为正整数n的划分.求正整数n的不 同划分个数. 例如正整数6有如下11种不同的划分: 6: 5+1: 4+2,4+1+1: 3+3,3+2+1,3+1+1+1: 2+2+2,2+2+1+1,2+1+1+1+1: 1+1+1+1+1+1.  输入 第一行是测试数据的数目M(1<=M<=10).以下每

傻瓜方法求集合的全部子集问题(java版)

给定随意长度的一个集合.用一个数组表示,如{"a", "b","c"},求它的全部子集.结果是{ {a}, {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c}}和一个空集. 以下讲的就是怎样用一个原始的傻瓜方法(非算法)求它的全部子集. 首先我们知道是它的子集个数是2^length,假设长度是3,那子集就共同拥有2的3次方=8个,包含空集. 求子集,我的做法是对不论什么一项做推断,有或者无,用1和0来相应表示. 那么像这

python 实现求一个集合的子集

概要 今天偶然看到有个关于数学中集合的问题,就突发奇想的想用python实现下求一个集合的子集. 准备 我当然先要复习下,什么是集合,什么是子集? 比较粗犷的讲法,集合就是一堆确定的东西,细致一点的讲法呢,就是由一个或多个确定的元素所构成的整体,集合中的东西称为元素. 集合有一些特性: 1.确定性 给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现. 2.互异性 一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.有时需要对同一元素

leetcode 题解:Search in Rotated Sorted Array II (旋转已排序数组查找2)

题目: Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this affect the run-time complexity? How and why? Write a function to determine if a given target is in the array. 说明: 1)和1比只是有重复的数字,整体仍采用二分查找 2)方法二 : 实现:  

LeetCode OJ:Pascal&#39;s TriangleII(帕斯卡三角II)

Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3,3,1]. 还是帕斯卡三角,只不过这里指定的是某一个特定的层,然后直接返回,这个就可以使用从后往前更新数组的方法,其实I也可以用这个方法来做的,只不过当时没想到啊,代码如下: 1 class Solution { 2 public: 3 vector<int> getRow(int rowInde