方法

    1. class Solution {
    2. public:
    3. vector<vector<int>>results;
    4. vector<int>result;
    5. vector<vector<int>> subsetsWithDup(vector<int>& nums) {
    6. sort(nums.begin(),nums.end());
    7. results.emplace_back();
    8. dfs(nums,0);
    9. return results;
    10. }
    11. void dfs(vector<int>& nums,int id){
    12. if(id>nums.size()){
    13. return;
    14. }
    15. for(int i=id;i<nums.size();i++){
    16. if(i>id&&nums[i]==nums[i-1]){
    17. continue;
    18. }
    19. result.emplace_back(nums[i]);
    20. results.emplace_back(result);
    21. dfs(nums,i+1);
    22. result.pop_back();
    23. }
    24. }
    25. };