39.組合總和

給定一個(gè)無(wú)重復(fù)元素的數(shù)組 candidates 和一個(gè)目標(biāo)數(shù) target 顷扩,找出 candidates 中所有可以使數(shù)字和為 target 的組合。

candidates 中的數(shù)字可以無(wú)限制重復(fù)被選取丹弱。

說(shuō)明:
所有數(shù)字(包括 target)都是正整數(shù)。
解集不能包含重復(fù)的組合铲咨。

示例 1:
輸入: candidates = [2,3,6,7], target = 7,
所求解集為:
[
[7],
[2,2,3]
]

示例 2:
輸入: candidates = [2,3,5], target = 8,
所求解集為:
[
[2,2,2,2],
[2,3,3],
[3,5]
]

求解思路

方法一

回溯(遞歸)+剪枝來(lái)完成躲胳,剪枝是為了去重(比如示例1中的[2,2,3]和[2,3,2])

方法二

動(dòng)態(tài)規(guī)劃求解

這里采用了方法一
public class CombinationSum {
    int[] candidates;
    int target;
    List<List<Integer>> mList = new ArrayList<>();

    public static void main(String[] args) {
        int[] arr = {2, 3, 5};
        int tar = 8;
        CombinationSum combinationSum = new CombinationSum();
        combinationSum.combinationSum(arr, tar);
    }

    public List<List<Integer>> combinationSum(int[] candidates, int target) {
        this.candidates = candidates;
        this.target = target;
        find(new ArrayList<>(), target);
        //System.out.println(mList);
        return mList;
    }

    public void find(List<Integer> list, int num) {
        if (num < 0) {
            return;
        }
        //遍歷遞歸
        for (int candidate : candidates) {
            //如果這次選的數(shù)比前面已經(jīng)選了的數(shù)還要小,那么直接跳過(guò)
            //這樣等于剪枝工作纤勒,去掉可能重復(fù)的list
            if (!list.isEmpty() && candidate < list.get(list.size() - 1)) {
                continue;
            }
            List<Integer> list1 = new ArrayList<>(list);
            list1.add(candidate);
            int res = num - candidate;
            //res為0坯苹,代表list1中所有數(shù)的和等于target
            //res小于0,則代表這條遞歸路徑行不通
            if (res == 0) {
                mList.add(list1);
            } else if (res > 0) {
                find(list1, res);
            }
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末摇天,一起剝皮案震驚了整個(gè)濱河市粹湃,隨后出現(xiàn)的幾起案子恐仑,更是在濱河造成了極大的恐慌,老刑警劉巖为鳄,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裳仆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡孤钦,警方通過(guò)查閱死者的電腦和手機(jī)歧斟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)偏形,“玉大人静袖,你說(shuō)我怎么就攤上這事】∨ぃ” “怎么了队橙?”我有些...
    開(kāi)封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)萨惑。 經(jīng)常有香客問(wèn)我捐康,道長(zhǎng),這世上最難降的妖魔是什么咒钟? 我笑而不...
    開(kāi)封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任吹由,我火速辦了婚禮若未,結(jié)果婚禮上朱嘴,老公的妹妹穿的比我還像新娘。我一直安慰自己粗合,他們只是感情好萍嬉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著隙疚,像睡著了一般壤追。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上供屉,一...
    開(kāi)封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天行冰,我揣著相機(jī)與錄音,去河邊找鬼伶丐。 笑死悼做,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哗魂。 我是一名探鬼主播肛走,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼录别!你這毒婦竟也來(lái)了朽色?” 一聲冷哼從身側(cè)響起邻吞,我...
    開(kāi)封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎葫男,沒(méi)想到半個(gè)月后抱冷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腾誉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年徘层,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片利职。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趣效,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猪贪,到底是詐尸還是另有隱情跷敬,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布热押,位于F島的核電站西傀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏桶癣。R本人自食惡果不足惜拥褂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牙寞。 院中可真熱鬧饺鹃,春花似錦、人聲如沸间雀。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惹挟。三九已至茄螃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間连锯,已是汗流浹背归苍。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留运怖,地道東北人拼弃。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像驳规,于是被迫代替她去往敵國(guó)和親肴敛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • 更多精彩內(nèi)容,請(qǐng)關(guān)注【力扣中等題】医男。 題目 難度:★★★☆☆類型:數(shù)組方法:回溯法 給定一個(gè)無(wú)重復(fù)元素的數(shù)組 ca...
    玖月晴閱讀 1,485評(píng)論 0 0
  • 難度:Medium. 給定一個(gè)無(wú)重復(fù)元素的數(shù)組 candidates 和一個(gè)目標(biāo)數(shù) target 砸狞,找出 cand...
    霞客環(huán)肥閱讀 184評(píng)論 0 1
  • 題目給定一個(gè)無(wú)重復(fù)元素的數(shù)組 candidates 和一個(gè)目標(biāo)數(shù) target ,找出 candidates 中所...
    HITZGD閱讀 237評(píng)論 0 0
  • 澡花一朵朵镀梭,想法一堆堆刀森。 今天是日更第183天,小澡哥先不談人力資源服務(wù)了报账。今天研底,小澡哥結(jié)合近年來(lái)國(guó)內(nèi)大學(xué)寫作通識(shí)...
    澡花可視化讀寫閱讀 2,384評(píng)論 4 30
  • 復(fù)盤內(nèi)容: ⒈從本周文章中我學(xué)到的最重要的概念 ①Would you like to be famous? ②Wh...
    17數(shù)414王俊平閱讀 334評(píng)論 2 0