Given a set of distinct integers, 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,3]
, a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
Subscribe to see which companies asked this question
class Solution {
public:
void findOne(vector<int> nums, vector<int> temp, vector<vector<int>> &ans, int k, int cur) {
if(k==0) {
ans.push_back(temp);
return ;
}
for(int i=cur; i<nums.size(); i++) {
temp.push_back(nums[i]);
findOne(nums, temp, ans,k-1, i+1);
temp.pop_back();
}
}
vector<vector<int>> subsets(vector<int> &nums) {
vector<vector<int>> ret;
vector<int> temp;
ret.push_back(temp);
sort(nums.begin(), nums.end());
int k=1;
for(int i=k; i<=nums.size(); i++) {
findOne(nums, temp, ret, i, 0);
}
return ret;
}
};