leetcode 39組合總數 python

2021-09-02 14:15:43 字數 1711 閱讀 5250

給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。

candidates 中的數字可以無限制重複被選取。

說明:所有數字(包括 target)都是正整數。

解集不能包含重複的組合。

示例 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]

]思路:

意思說 給你一組正數c,然後 給你乙個目標數t, 讓你從那組c中找到加在一起等於t的那些組合。

比如 給你7 然後 從[2,3,6,7]中可以找到[2,2,3]和[7]兩組組合。

想了一下還是用dfs:

就以這個例子舉,比如讓我找組成7的數,

首先那個7肯定是。

然後再看,6,如果6在我們結果裡,那還得有能組成7-6=1的數,對吧,然而並沒有1,放棄6

再看3,如果要有3,那後面要有能組成7-3=4的數,

發現了什麼沒有。。

只是從需要組成7的變換成需要組成4的,那寫乙個函式就可以了。

這個函式的主題邏輯是:

target =t,然後從陣列中找乙個數n,然後在 剩下的部分target 變成了 t-n,以此類推。

函式到哪返回呢,如果目標數t=0,則找的成功,返回,如果目標數t小於c中最小的數,言外之意就是我們找到不這樣的組合了,尋找失敗,返回。

需要注意的是,答案要求沒有重複的,如果只是這麼寫會變成[2,3,2],[2,2,3],[3,2,2],因此要記下 上乙個數,我是從小往大找的,也就是說,

如果我已經找完n=2的情況,再去找n=3的時候,3就不應該往回再選n=2了,只能往後走,不然就會重複。

leetcode39 組合總數

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。示例 1 輸入 candid...

LeetCode 39 組合總數

給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 輸入 candidates...

leetcode 39 組合總數(回溯)

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明當我看到這道題目的時候,當我看到要得到所有結果的組合,我二話沒說,立馬開始寫 了,一下是我寫的 ...