給定乙個無重複元素的陣列 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 中的數字可以無限制重複被選取。說明當我看到這道題目的時候,當我看到要得到所有結果的組合,我二話沒說,立馬開始寫 了,一下是我寫的 ...