78. 子集

題意

給定一組不含重復(fù)元素的整數(shù)數(shù)組nums,返回該數(shù)組所有可能的子集(冪集)。
說明:解集不能包含重復(fù)的子集。
示例:
輸入:nums = [1,2,3]
輸出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]

思路

首先因?yàn)轭}目說不含重復(fù)元素,那么可以知道子集總數(shù)為C(0, n) + C(1, n) + ... + C(n, n) = 2^n

于是很自然可以想到二進(jìn)制的全排列,哪一位出現(xiàn)1,則表示該位置數(shù)字被選中,例如樣例中的三個(gè)數(shù)字那么二進(jìn)制全排列為:
000 = [ ]
001 = [ 1 ]
010 = [ 2 ]
011 = [ [1, 2] ]
100 = [ 3 ]
101 = [ [3, 1] ]
...

所以可以根據(jù)這個(gè)進(jìn)行枚舉0~2^n,然后對(duì)每個(gè)數(shù)字進(jìn)行拆分。代碼如下:

class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        vector<vector<int>> ans;
        int len = nums.size();
        if(len == 0) return ans;
        int max_num = 1 << len;
        vector<int> tmp_array;
        for (int i=0; i<max_num; i++){
            tmp_array.clear();
            get_now_subset(i, nums, tmp_array);
            ans.push_back(tmp_array);
        }
        return ans;
    }
    void get_now_subset(int now_num, vector<int>& nums, vector<int>& subset){
        int len = nums.size();
        for (int i=0; i<len; i++){
            if (now_num & 1){
                subset.push_back(nums[i]);
            }
            now_num >>= 1;
        }
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 78. 子集給定一組不含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。說明:解集不能包含重復(fù)的子...
    杏仁小核桃閱讀 295評(píng)論 0 0
  • 給定一組不含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。 說明:解集不能包含重復(fù)的子集。 示例...
    佛祖拿屠刀閱讀 181評(píng)論 0 0
  • 題目給定一組不含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。 說明:解集不能包含重復(fù)的子集。 ...
    HITZGD閱讀 282評(píng)論 0 0
  • <center>#1 Two Sum</center> link Description:Given an arr...
    鐺鐺鐺clark閱讀 2,374評(píng)論 0 3
  • 代碼解答 思路解析 讀題分析應(yīng)該用遞歸,第一個(gè)數(shù)與剩余數(shù)組合,第二個(gè)數(shù)與排除第一個(gè)數(shù)后剩余數(shù)組合...到達(dá)邊界后返...
    jianshujoker閱讀 193評(píng)論 0 0

友情鏈接更多精彩內(nèi)容