无重复子集问题求解

简介: 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。

子集 II


问题描述


给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。


解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。原题链接


重复子集可以查看之前的博客子集问题


示例 1:


输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]


示例 2:


输入:nums = [0]
输出:[[],[0]]


解题思路


使用回溯算法,等于原始子集问题的去重处理,去除所有子集中的重复子集。


解题代码


vector<vector<int>> res;
 vector<int> temp;
 void backTracking(vector<int>& nums,int number,int index){
     if(temp.size()==number){
         res.push_back(temp);
         return ;
     }
     for(int i=index;i<nums.size();i++){
         if(i>index&&nums[i]==nums[i-1]){
             continue;
         }
         temp.push_back(nums[i]);
         backTracking(nums,number,i+1);
         temp.pop_back();
     }
     return ;
 }
 vector<vector<int>> subsetsWithDup(vector<int>& nums) {
     sort(nums.begin(),nums.end());
     for(int i=0;i<=nums.size();i++){
         backTracking(nums,i,0);
     }
     return res;
 }


最关键的是回溯算法里面的一下判断条件,将会直接避免重复的子集出现(去掉该条件就可以转化为有重复的子集求解):


if(i>index&&nums[i]==nums[i-1]){
    continue;
}


目录
相关文章
|
4月前
|
存储 算法 程序员
【算法训练-回溯算法 二】【子集组合问题】子集、组合、子集II、组合总和
【算法训练-回溯算法 二】【子集组合问题】子集、组合、子集II、组合总和
41 0
|
4月前
|
算法 测试技术 C#
C++单调向量算法:132 模式解法三枚举1
C++单调向量算法:132 模式解法三枚举1
|
8月前
|
算法
排列组合算法
排列组合算法
|
存储 算法
一文搞懂全排列、组合、子集问题
Hello,大家好,我是bigsai,long time no see!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合、子集等问题更是非常经典问题。本篇文章就带你彻底搞懂全排列!
137 0
一文搞懂全排列、组合、子集问题
|
机器学习/深度学习
【组合数学】组合数学简介 ( 组合思想 3 : 上下界逼近 | 上下界逼近示例 Remsey 数 )
【组合数学】组合数学简介 ( 组合思想 3 : 上下界逼近 | 上下界逼近示例 Remsey 数 )
202 0
【组合数学】组合数学简介 ( 组合思想 3 : 上下界逼近 | 上下界逼近示例 Remsey 数 )
【组合数学】生成函数 ( 正整数拆分 | 无序不重复拆分示例 )
【组合数学】生成函数 ( 正整数拆分 | 无序不重复拆分示例 )
277 0
|
机器学习/深度学习 算法
【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )
【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )
201 0
|
机器学习/深度学习 人工智能 Serverless
【组合数学】生成函数 ( 正整数拆分 | 正整数拆分基本模型 | 有限制条件的无序拆分 )
【组合数学】生成函数 ( 正整数拆分 | 正整数拆分基本模型 | 有限制条件的无序拆分 )
231 0
|
机器学习/深度学习 移动开发
【组合数学】排列组合 ( 集合组合、一一对应模型分析示例 )
【组合数学】排列组合 ( 集合组合、一一对应模型分析示例 )
151 0
|
机器学习/深度学习 移动开发
【组合数学】排列组合 ( 集合排列、分步处理示例 )
【组合数学】排列组合 ( 集合排列、分步处理示例 )
151 0