題目
給定一組不含重復元素的整數數組 nums,返回該數組所有可能的子集(冪集)。
說明:解集不能包含重復的子集。
思考分析
畫出解空間樹。
我們可以發現我們所需要的結果是解空間的所有結點。而我們之前組合問題和分割問題都是收集樹的葉子結點。
所以我們只需要將每個結點放入結果中就行了
class Solution {
public:vector<vector<int>> result;vector<int> res;void backtracking(vector<int>& nums,int start,int end){result.push_back(res);//剩余集合為空,返回if(start==end){return;}for(int i=start;i<end;i++){//處理結點;res.push_back(nums[i]);//遞歸,探索下一層backtracking(nums,i+1,end); //遞歸//回溯,撤銷處理結果res.pop_back();}return;}vector<vector<int>> subsets(vector<int>& nums) {result.clear();res.clear();backtracking(nums,0,nums.size());return result;}
};