给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

思路:!!遍历的每一个节点都需要储存,所以先存,再判断终止条件。
- class Solution {
- private:
- vector
int>> result; - vector<int> path;
- public:
- void backtracking(vector<int>& nums,int startIndex){
- //每个节点都得存,而不是之前遇到一个叶子节点才存了
- result.push_back(path);
- //终止条件
- if(startIndex>=nums.size()) return;
- //单层处理
- for(int i=startIndex;i
size();i++) - {
- path.push_back(nums[i]);
- backtracking(nums,i+1);
- path.pop_back();
- }
- }
- vector
int>> subsets(vector<int>& nums) { - result.clear();
- path.clear();
- backtracking(nums,0);
- return result;
- }
- };