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], [] ]
Source Code:
class Solution { public: vector<vector <int> > subsets(vector<int>& nums) { sort (nums.begin (), nums.end ()); vector <vector <int> > res; vector <int> status; dfs (nums, status, 0, res); return res; } void dfs (const vector <int> & nums, vector <int> & status, \ int cur, vector <vector <int> > & res) { if (cur == nums.size ()) { res.push_back (status); return; } dfs (nums, status, cur + 1, res); status.push_back (nums[cur]); dfs (nums, status, cur + 1, res); status.pop_back (); } };