78. Subsets
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], [] ]
解题思路:递归回溯法
每次在现有的集合下选择加入下一个元素,并把每次的过程都放在最终的result中,然后把下一个元素pop出来,在此情况下选择下下个元素。
class Solution { public: void helper(vector<vector<int>>&res, vector<int>& nums,vector<int> temp, int depth){ res.push_back(temp); for(int i=depth;i<nums.size();i++){ temp.push_back(nums[i]); helper(res,nums,temp,i+1); temp.pop_back(); } } vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>>res; vector<int>temp; helper(res,nums,temp,0); return res; } };