leetcode-Subsets II

来源:互联网 发布:平面布置图软件 编辑:程序博客网 时间:2024/05/17 02:55
Subsets II Given a collection of integers that might contain duplicates, nums, return all possible subsets.Note:Elements in a subset must be in non-descending order.The solution set must not contain duplicate subsets.For example,If nums = [1,2,2], a solution is:[ [2], [1], [1,2,2], [2,2], [1,2], []]与 SUBSETS 思路一致,只是有重复数字,要考虑去重的问题;用一个set集合进行存储,即可去重;再遍历set,存入vector集合中即可。
class Solution {public:    vector< vector<int> > subsetsWithDup(vector<int>& nums) {        sort(nums.begin(),nums.end());        set < vector<int> > ans;        int n = nums.size();        int i = 0,j= 0;        for(i = 0;i< 1 << n;i++)        {            vector<int> temp;            int index = 0;            int count = i;            while(count != 0)            {                if(count & 1 == 1)                {                    temp.push_back(nums[index]);                }                index++;                count = count >> 1;            }           ans.insert(temp);        }        vector < vector<int> > sub;        set< vector<int> > ::iterator start = ans.begin();        set< vector<int> > ::iterator end = ans.end();        for(;start!=end;start++)//遍历SET        {            sub.push_back(*start);        }           return sub;    }};

0 0
原创粉丝点击