給你乙個無重複元素的整數陣列candidates和乙個目標整數target,找出candidates中可以使數字和為目標數target的所有不同組合,並以列表形式返回。你可以按任意順序返回這些組合。
candidates中的同乙個 數字可以無限制重複被選取。如果至少乙個數字的被選數量不同,則兩種組合是不同的。
對於給定的輸入,保證和為target的不同組合數少於150個。
時間複雜度:
o(s):
其中s為所有可行解的長度之和。
o(n*2的n次方)是乙個比較松的上界,因為n個位置每次考慮選或者不選,如果符合條件,就加入答案的時間代價。
但是實際執行的時候,因為不可能所有的解都滿足條件,遞迴的時候還會使用target-candidates[idx]>=0進行剪枝,所以實際運**況是遠遠小於上界。
空間複雜度:
o(target)
除了答案陣列之外,空間複雜度取決於遞迴的棧深度,在最差的情況下需要遞迴o(target)層
示例一:
輸入:candidates = [2,3,6,7], target = 7
輸出:[[2,2,3],[7]]
解釋:2 和 3 可以形成一組候選,2 + 2 + 3 = 7 。注意 2 可以使用多次。
7 也是乙個候選, 7 = 7 。
僅有這兩種組合。
示例二:
輸入: candidates = [2,3,5], target = 8
輸出: [[2,2,2,2],[2,3,3],[3,5]]
示例三:
輸入: candidates = [2], target = 1
輸出:
39 組合總和
給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2...
39 組合總和
給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 示例 2 ...
39 組合總和
給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 輸入 candida...