class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<vector<int>> result;
set<vector<int>> ans;
vector<int> path;
ans.insert(path);
if(nums.size()==0)
{
result.push_back(path);
return result;
}
sort(nums.begin(),nums.end());
dfs(nums,0,path,ans);
// 复制容器1.
vector<vector<int>> result1(ans.begin(),ans.end());
//复制容器2.assign
//vector<vector<int>> result1;
//result1.assign(ans.begin(),ans.end());
//复制容器3 iterator
//声明迭代器
return result1;
}
void dfs(vector<int>& nums,int pos,vector<int> & path,set<vector<int>> & ans)
{
if(pos==nums.size())
return;
for(int i=pos;i<nums.size();i++)
{
path.push_back(nums[i]);
ans.insert(path);
dfs(nums,i+1,path,ans);
path.pop_back();
}
}
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<vector<int>> result;
set<vector<int>> ans;
vector<int> path;
ans.insert(path);
if(nums.size()==0)
{
result.push_back(path);
return result;
}
sort(nums.begin(),nums.end());
dfs(nums,0,path,ans);
// 复制容器1.
vector<vector<int>> result1(ans.begin(),ans.end());
//复制容器2.assign
//vector<vector<int>> result1;
//result1.assign(ans.begin(),ans.end());
//复制容器3 iterator
//声明迭代器
return result1;
}
void dfs(vector<int>& nums,int pos,vector<int> & path,set<vector<int>> & ans)
{
if(pos==nums.size())
return;
for(int i=pos;i<nums.size();i++)
{
path.push_back(nums[i]);
ans.insert(path);
dfs(nums,i+1,path,ans);
path.pop_back();
}
}
};
vector变set:
vector<string> word
unordered_set<string> wordDict(word.begin(),word.end());