这题有很多解法:
我用的位运算:
代码如下:
class Solution {
public:
/**
* @param nums: A set of numbers
* @return: A list of lists
*/
vector<vector<int>> subsets(vector<int> &nums) {
vector<vector<int> > solution;
vector<int> singleSol;
int numSize=nums.size();
int totalNum=pow(2,numSize)-1;
solution.push_back(singleSol);
sort(nums.begin(), nums.end());
for (int i=1; i<=totalNum; ++i) {
singleSol.clear();
for(int j=0; j<numSize; ++j) {
int bitNum = (i>>j)&0x1;
if (bitNum==1) {
singleSol.push_back(nums[j]);
}
}
solution.push_back(singleSol);
}
return solution;
}
};
其他解法下次补充。