1.
当我们发现相同的数字出现时不用再进一次循环时,会用到以下格式
class Solution {
public:
vector<vector<int>>ret;
vector<int>path;
void set(vector<int>&nums,int pos,vector<bool>&visit)
{
ret.push_back(path);
for(int i=pos;i<nums.size();i++)
{
if(i>0&&nums[i]==nums[i-1]&&visit[i-1]==false)
{
continue;
}
path.push_back(nums[i]);
visit[i]=true;
set(nums,i+1,visit);
path.pop_back();
visit[i]=false;
}
}
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<bool>visit(nums.size(),false);
sort(nums.begin(),nums.end());
set(nums,0,visit);
return ret;
}
};