lintcode 17 子集

1、遞歸方法

原集合每一個數(shù)字只有兩種狀態(tài)浆西,要么存在,要么不存在顽腾,那么在構(gòu)造子集時就有選擇和不選擇兩種情況近零,所以可以構(gòu)造一棵二叉樹,左子樹表示選擇該層處理的節(jié)點抄肖,右子樹表示不選擇久信,最終的葉節(jié)點就是所有子集合,樹的結(jié)構(gòu)如下:


捕獲.JPG

遞歸方法:

class Solution {
public:
    /**
     * @param nums: A set of numbers
     * @return: A list of lists
     */
    vector<vector<int>> subsets(vector<int> &nums) {
        // write your code here
        vector<vector<int>> res;
        if(nums.size() == 0){
            res.push_back(nums);
            return res;
        }
        sort(nums.begin(),nums.end());
        vector<int> temp;
        help(res,nums,0,temp);
        return res;
    }
    
    void help(vector<vector<int>> &res, vector<int> &nums,int i,vector<int> p){
        if(i == nums.size()){//基本情況漓摩,添加結(jié)果裙士,退出
            res.push_back(p);
            return;
        }else{
            help(res,nums,i+1,p);//不加入當(dāng)前節(jié)點,處理后續(xù)節(jié)點
                                              //注意 p在當(dāng)前層的值不變
            p.push_back(nums[i]);//加入當(dāng)前節(jié)點
            help(res,nums,i+1,p);//處理后續(xù)節(jié)點
        }
    }
    
    
};

1管毙、非遞歸方法

思路分析:n個元素的子集共有2^n個腿椎,其中包括空集。
(1)假設(shè)有3個元素{a, b, c}夭咬,那么此時有 2^3 個子集啃炸,即8個子集。
(2)因為有8個子集卓舵,而且包括空集南用,注意7對應(yīng)的二進制形式為111,并且二進制數(shù)剛好3位;所以(000 ~ 111)可分別對應(yīng)一個子集裹虫,若該位為1肿嘲,則表示該元素出現(xiàn)在子集中,若該位為0恒界,則表示該元素不出現(xiàn)在子集中睦刃;
(3)注意:001中的1在低位,對應(yīng)的是a十酣,即數(shù)組中的首個元素涩拙。
(4)舉例
111表示子集abc;
110表示子集bc耸采;
101表示子集ac兴泥;
100表示子集c;
011表示子集ab
010表示子集b虾宇;
001表示子集a搓彻;
000則表示空集;

class Solution {
public:
    /**
    * @param nums: A set of numbers
    * @return: A list of lists
    */
    vector<vector<int>> subsets(vector<int> &nums) {
        // write your code here
        int len = nums.size();
        vector<vector<int>> res;
        if (len == 0) {
            res.push_back(nums);
            return res;
        }

        int n = 1 << len;//一共有多少個子集

        for (int i = 0; i < n; i++) {
            vector<int> line;
            int mark = i;//當(dāng)循環(huán)內(nèi)部對i處理時 必須處理i的備份
            int j = 0;//遍歷當(dāng)前i值
            while (mark > 0) {
                if (mark & 1) {
                    line.push_back(nums[j]);
                }
                mark = mark >> 1;
                j++;
            }
            res.push_back(line);//保存當(dāng)前i的子集
        }

        return res;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嘱朽,一起剝皮案震驚了整個濱河市旭贬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搪泳,老刑警劉巖稀轨,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異岸军,居然都是意外死亡奋刽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門艰赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佣谐,“玉大人,你說我怎么就攤上這事方妖∠粱辏” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵党觅,是天一觀的道長雌澄。 經(jīng)常有香客問我,道長仔役,這世上最難降的妖魔是什么掷伙? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任是己,我火速辦了婚禮又兵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己沛厨,他們只是感情好宙地,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逆皮,像睡著了一般宅粥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上电谣,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天秽梅,我揣著相機與錄音,去河邊找鬼剿牺。 笑死企垦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晒来。 我是一名探鬼主播钞诡,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼湃崩!你這毒婦竟也來了荧降?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤攒读,失蹤者是張志新(化名)和其女友劉穎朵诫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體整陌,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡拗窃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泌辫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片随夸。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖震放,靈堂內(nèi)的尸體忽然破棺而出宾毒,到底是詐尸還是另有隱情,我是刑警寧澤殿遂,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布诈铛,位于F島的核電站,受9級特大地震影響墨礁,放射性物質(zhì)發(fā)生泄漏幢竹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一恩静、第九天 我趴在偏房一處隱蔽的房頂上張望焕毫。 院中可真熱鬧蹲坷,春花似錦、人聲如沸邑飒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疙咸。三九已至县匠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撒轮,已是汗流浹背乞旦。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留题山,地道東北人杆查。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像臀蛛,于是被迫代替她去往敵國和親亲桦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容