leetcode91.子集Ⅱ

給定一個可能包含重複元素的整數數組 nums,返回該數組所有可能的子集(冪集)。

說明:解集不能包含重複的子集。

示例:

輸入: [1,2,2]
輸出:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]

class Solution {
public:
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        vector<vector<int>> res;
        vector<int> temp;
        if(nums.empty())
            return res;
        sort(nums.begin(),nums.end());
        dfs(res,temp,nums,0);
        res.push_back(temp);
        return res;
    }
    
    void dfs(vector<vector<int>> & res,vector<int> & temp, vector<int> & nums,int index)
    {
        for(int i=index;i<nums.size();i++)
        {
            temp.push_back(nums[i]);
            if(find(res.begin(),res.end(),temp) == res.end())
                res.push_back(temp);
            dfs(res,temp,nums,i+1);
            temp.pop_back();
        }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章