Lintcode152 Combinations solution 題解

【題目描述】

Given two integersnandk, return all possible combinations of?k?numbers out of 1 ...n.

組給出兩個整數n和k,返回從1......n中選出的k個數的組合。

【題目鏈接】

www.lintcode.com/en/problem/combinations/

【題目解析】

先枚舉第一個數,然后枚舉一個比第一個數大的數作為第二個數,……,最后枚舉一個比前k-1個數都大的數作為第k個數,這樣就能夠枚舉所有k個數的組合方案,又能夠保證不出現重復的情況。

但是由于k是輸入的,所以我們需要采取回溯的形式,即以遞歸嵌套的方式來動態的進行枚舉。

然后就只需要在可以的范圍內枚舉下一個數,添加到current的末尾,這個數需要比last大,并且比n-k+1要小(確保之后的數還有空間)。

在枚舉好后,就只需要在current之后添加該數,然后利用回溯的方法,遞歸的去枚舉下一個數。

特別的,當k==0時,說明已經完成了枚舉,只需要將current添加到ans末尾即可。

【參考答案】

www.jiuzhang.com/solutions/combinations/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,769評論 0 33
  • LeetCode 刷題隨手記 - 第一部分 前 256 題(非會員),僅算法題,的吐槽 https://leetc...
    蕾娜漢默閱讀 17,920評論 2 36
  • 回溯算法 回溯法:也稱為試探法,它并不考慮問題規模的大小,而是從問題的最明顯的最小規模開始逐步求解出可能的答案,并...
    fredal閱讀 13,728評論 0 89
  • 因為年輕而敏感的自尊心,才使他們躲避公眾的目光來悄然地取走自己那兩個不體面的黑家伙,以免遭受許多無言的恥笑! 他現...
    白甫愈疾閱讀 449評論 0 0
  • by Pavel Puhov
    知否讀書閱讀 95評論 0 0