class Solution {
private:
vector<int> path;
vector<vector<int>> res;
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型vector<vector<>>
*/
vector<vector<int> > subsets(vector<int>& nums) {
// write code here
sort(nums.begin(), nums.end());
vector<int> vis(nums.size(), 0);
dfs(nums, vis, 0);
return res;
}
void dfs(vector<int>& nums, vector<int>& vis, int cur_pos){
res.push_back(path);
for(int i=cur_pos; i<nums.size(); i++){
if(i>0 && nums[i] == nums[i-1] && vis[i-1] == 0){
continue;
}
path.push_back(nums[i]);
vis[i] = 1;
dfs(nums, vis, i+1);
path.pop_back();
vis[i] = 0;
}
}
};