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], [] ]
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class Solution { 2 public: 3 vector<vector<int>> subsets(vector<int>& nums) { 4 vector<vector<int>> ans; 5 vector<int> temp; 6 ans.push_back(temp); 7 sort(nums.begin(),nums.end()); 8 dep(nums,0,temp,ans); 9 return ans; 10 } 11 void dep(vector<int>&nums,int p,vector<int>&temp,vector<vector<int>>&ans) 12 { 13 if(p>=nums.size()) 14 { 15 if(temp.size()>0) 16 ans.push_back(temp); 17 return; 18 } 19 20 temp.push_back(nums[p]); 21 dep(nums,p+1,temp,ans); 22 temp.erase(temp.end()-1); 23 dep(nums,p+1,temp,ans); 24 } 25 };