77. Combinations 組合

題目鏈接
tag:

  • Medium;

question:
??Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

Example:

Input: n = 4, k = 2
Output:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]

解法一:
思路:這道題讓求1到n共n個(gè)數(shù)字里k個(gè)數(shù)的組合數(shù)的所有情況扣泊,還是要用深度優(yōu)先搜索DFS來(lái)解,根據(jù)以往的經(jīng)驗(yàn)尺上,像這種要求出所有結(jié)果的集合,一般都是用DFS調(diào)用遞歸來(lái)解抽米。那么我們建立一個(gè)保存最終結(jié)果的大集合res狞谱,還要定義一個(gè)保存每一個(gè)組合的小集合out,每次放一個(gè)數(shù)到out里免糕,如果out里數(shù)個(gè)數(shù)到了k個(gè)赢乓,則把out保存到最終結(jié)果中,否則在下一層中繼續(xù)調(diào)用遞歸说墨。網(wǎng)友u010500263的博客里有一張圖很好的說(shuō)明了遞歸調(diào)用的順序骏全,請(qǐng)點(diǎn)擊這里苍柏。根據(jù)上面分析尼斧,可寫(xiě)出代碼如下:

class Solution {
public:
    vector<vector<int>> combine(int n, int k) {
        vector<vector<int>> res;
        vector<int> out;
        helper(n, k, 1, out, res);
        return res;
    }
    void helper(int n, int k, int level, vector<int>& out, vector<vector<int>>& res) {
        if (out.size() == k) {res.push_back(out); return;}
        for (int i = level; i <= n; ++i) {
            out.push_back(i);
            helper(n, k, i + 1, out, res);
            out.pop_back();
        }
    }
};

解法二:
思路:我們?cè)賮?lái)看一種迭代的寫(xiě)法,也是一種比較巧妙的方法试吁。這里每次先遞增最右邊的數(shù)字棺棵,存入結(jié)果res中,當(dāng)右邊的數(shù)字超過(guò)了n熄捍,則增加其左邊的數(shù)字烛恤,然后將當(dāng)前數(shù)組賦值為左邊的數(shù)字,再逐個(gè)遞增余耽,直到最左邊的數(shù)字也超過(guò)了n缚柏,停止循環(huán)。對(duì)于n=4, k=2時(shí)碟贾,遍歷的順序如下所示:

0 0 #initialization
1 0
1 1
1 2 #push_back
1 3 #push_back
1 4 #push_back
1 5
2 5
2 2
2 3 #push_back
2 4 #push_back
...
3 4 #push_back
3 5
4 5
4 4
4 5
5 5 #stop

代碼如下:

class Solution {
public:
    vector<vector<int>> combine(int n, int k) {
        vector<vector<int>> res;
        vector<int> out(k, 0);
        int i = 0;
        while (i >= 0) {
            ++out[i];
            if (out[i] > n) --i;
            else if (i == k - 1) res.push_back(out);
            else {
                ++i;
                out[i] = out[i - 1];
            }
        }
        return res;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末币喧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子袱耽,更是在濱河造成了極大的恐慌杀餐,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朱巨,死亡現(xiàn)場(chǎng)離奇詭異史翘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)冀续,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門琼讽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人洪唐,你說(shuō)我怎么就攤上這事跨琳。” “怎么了桐罕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵脉让,是天一觀的道長(zhǎng)桂敛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)溅潜,這世上最難降的妖魔是什么术唬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮滚澜,結(jié)果婚禮上粗仓,老公的妹妹穿的比我還像新娘。我一直安慰自己设捐,他們只是感情好借浊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著萝招,像睡著了一般蚂斤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上槐沼,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天曙蒸,我揣著相機(jī)與錄音,去河邊找鬼岗钩。 笑死纽窟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兼吓。 我是一名探鬼主播臂港,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼视搏!你這毒婦竟也來(lái)了审孽?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凶朗,失蹤者是張志新(化名)和其女友劉穎瓷胧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體棚愤,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搓萧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宛畦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘸洛。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖次和,靈堂內(nèi)的尸體忽然破棺而出反肋,到底是詐尸還是另有隱情,我是刑警寧澤踏施,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布石蔗,位于F島的核電站罕邀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏养距。R本人自食惡果不足惜诉探,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棍厌。 院中可真熱鬧肾胯,春花似錦、人聲如沸耘纱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)束析。三九已至艳馒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間畸陡,已是汗流浹背鹰溜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工虽填, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丁恭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓斋日,卻偏偏與公主長(zhǎng)得像牲览,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子恶守,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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

  • 這個(gè)不錯(cuò)分享給大家第献,從扣上看到的,就轉(zhuǎn)過(guò)來(lái)了 《電腦專業(yè)英語(yǔ)》 file [fail] n. 文件兔港;v. 保存文...
    麥子先生R閱讀 6,566評(píng)論 5 24
  • 剛剛問(wèn)了在京東的學(xué)長(zhǎng)我的面試結(jié)果衫樊,得知拒信之后中總是免不了心灰意冷和對(duì)自己的懷疑與不自信飒赃。 不記得是哪位文學(xué)大師的...
    csu_zipple閱讀 1,208評(píng)論 0 0
  • 今天欣賞林語(yǔ)堂先生《生活的藝術(shù)》一書(shū)中有關(guān)“閱讀的藝術(shù)”的第十四段,也是這篇文章的最后一段科侈。十四個(gè)段落用了十四個(gè)星...
    一早嗎閱讀 356評(píng)論 2 2
  • 霞鋪山 暗淡青江 路漫漫 天高水長(zhǎng) 夜色催 思隨江涌 愿做緲緲孤舟翁 臥垂墜星 也嘆一番赤壁 舉酒對(duì)月 與影相飲共...
    生椒麻味閱讀 338評(píng)論 1 5