leetcode递归与回溯

有重复元素的数组,可以组成的所有子集(无重复)

vector<vector<int>> subsetsWithDup(vector<int>& nums)
    {
     vector<vector<int>>result;
	 vector<int>item;
	 set<vector<int>>res_set;
	 sort(nums.begin(),nums.ends());
	 result.push_back(item);
	 generate(0,nums,item,result,res_set);
	 return result;
	 }
private:
      void generate(int i,vector<int>&nums,vector<vector<int>>&result,vector<int>&item,set<vector<int>>&res_set)
	  {
	       if()
		   item.push_back(nums[i]);
		   if(res_set.find(item)==res_set.end()//在res_set集合中,找不到item
		   {
		      result.push_back(item);
			  res_set.insert(item);
		   }
		   generate(i+1,nums,result,item,res_set);
		   result.pop_back();
		   generate(i+1,nums,result,item,res_set);
	  }

发布了8 篇原创文章 · 获赞 2 · 访问量 725

猜你喜欢

转载自blog.csdn.net/weixin_41375103/article/details/104144659
今日推荐