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], [] ]answer:
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
int length = nums.size();
vector<vector<int>> result;
vector<int> temp;
result.push_back(temp);
if(length == 0) return result;
for(int k = 1; k <= length; k ++){
mySub(-1,length - 1,k,nums,temp,result);
}
return result;
}
void mySub(int index, int length, int k, vector<int>& nums, vector<int> & temp, vector<vector<int>> & result){
if(index > length || k < 0) return;
if(k == 0){
result.push_back(temp);
return;
}
for(int i = index + 1; i <= length; i ++){
temp.push_back(nums[i]);
mySub(i,length,k - 1,nums,temp,result);
temp.pop_back();
}
}
};