[leetcode]90. 子集 II

在这里插入图片描述

bitmasking:

歪打正着,想着跟子集1(没有重复的元素)差不多,去下重就好了,然后没排序,然后就出现了重复的子集,然后排下序观察输出,然后就好了???,然后发现没排序重复是因为有的子集包含的元素相同,但元素内顺序不一样

可以参考子集1

https://blog.csdn.net/qq_40691051/article/details/104326461
在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        int n=nums.size();
        sort(nums.begin(),nums.end());
        vector<vector<int>>res;
        set<vector<int>>m_set;
        for(int mask = 0; mask < (1<<n); mask++)
        {
            vector<int>temp;
            for(int i = 0; i < n; i++)
            {
                if(mask&(1<<i)) // is the i-th bit of this mask 1?
                {//This mask corresponds to a subset containing i-th number of nums array
                    temp.push_back(nums[i]);
                }
            }
            if(m_set.count(temp) == 0)
            {//去重
                m_set.insert(temp);
                res.push_back(temp);
            }
        }
        return res;
    }
};
发布了179 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40691051/article/details/104328617