再次求助
  • 板块灌水区
  • 楼主TGD_R_123
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/5/24 14:02
  • 上次更新2024/5/24 18:07:11
查看原帖
再次求助
1060074
TGD_R_123楼主2024/5/24 14:02

特邀:@Hoks @Dead_reaper

题目:给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集。答案不能包含重复的子集。返回的答案中,子集可以按任意顺序 排列。

样例:

输入:nums = [1,2,2]

输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]

我的去世代码:

class Solution {
    vector<int> num;
    vector<vector<int>> ans;
    vector<int> now;
    map<vector<int>,bool> m;
    int n;
public:
    void method(int d,int start){
        vector<int> tmp=now;
        sort(tmp.begin(),tmp.end());
        if(d<=n and !m[tmp]){ans.push_back(now);m.insert(make_pair(tmp,true));}
        for(int i=start;i<=n-1;i++){
            now.push_back(num[i]);
            method(d+1,i+1);
            now.pop_back();
        }return ;
    }
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        num=nums;
        n=nums.size();
        method(0,0);
        return ans;
    }
};

蒟蒻求调

2024/5/24 14:02
加载中...