Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example, If nums = [1,2,3], a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
题目链接 求一个集合的所有子集(不包括重复的) Language: cpp(6ms)
class Solution { public: vector<vector<int> > subsets(vector<int>& nums) { sort(nums.begin(),nums.end()); int set_nums=pow(2,nums.size()); vector<vector<int> > res(set_nums,vector<int>()); for(int i=0;i<set_nums;i++){ for(int j=0;j<nums.size();j++){ if((i>>j)&1){ res[i].push_back(nums[j]); } } } return res; } };Discuss里的讨论: bit manipulation Recursive/Iterative/Bit-Manipulation Solutions