78. Subsets
仅供自己学习
思路:
这种遍历全部可能的题都可用回朔法解决,做了挺多道了,有了大体的模板,但一些细节,如什么时候返回结果,返回的条件应该是什么,什么时候加入一种组合到结果里面,需要特别分析,这里我们是没进入回朔函数就将一种组合加入到结果里面,回朔结束就pop掉新加入得元素,又通过for循环将下一个新元素加入,在进入回朔函数 这样重复进行。
这里的空集不能直接,push_back([]),可以直接将一个空的vector加入进结果里面即可
代码:
1 class Solution { 2 public: 3 vector<vector<int>> subsets(vector<int>& nums) { 4 vector<vector<int>> res; 5 vector<int> out; 6 backtracking(0,nums,res,out); 7 return res; 8 } 9 void backtracking(int start,vector<int>& nums,vector<vector<int>>& res,vector<int>& out){ 10 res.push_back(out); 11 for(int i=start;i<nums.size();++i){ 12 out.push_back(nums[i]); 13 backtracking(i+1,nums,res,out); 14 out.pop_back(); 15 } 16 17 } 18 };

浙公网安备 33010602011771号