# 【LeetCode】 78. Subsets ## Description > Given a set of distinct integers, nums, return all possible subsets (the power set). > Note: The solution set must not contain duplicate subsets. > 給一個由不同整數構成的集合,回傳所有可能的子集合。 > 注意:答案不能包含重複的子集合。 ## Example: ``` Example: Input: nums = [1,2,3] Output: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] ``` ## Solution * 用二進制去代表一個元素要不要放到新的子集合內。 * 假設原集合為`1` `2` `3` `4`,就宣告一個計數器從`0000`跑到`1111`,第`i`格如果為`1`,代表第`i`格的元素要放到新的集合中。 * `0000`代表空集合,`0101`代表`[2,4]`,`1110`代表`[1,2,3]`。 * 子集合的順序不重要。 ### Code ```C++=1 class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> ans; for(int count=0;count<pow(2,nums.size());count++) { vector<int> temp; for(int i = 0;i<nums.size();i++) { if(count&(int)pow(2,i)) temp.push_back(nums[i]); } ans.push_back(temp); } return ans; } }; ``` ###### tags: `LeetCode` `C++`