LeetCode 39 組合總和

2021-09-14 03:36:31 字數 1071 閱讀 8451

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

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

說明:

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

]

這是一道dfs的題,dfs函式的可變引數有3個:target、start、out,其中target是當前剩餘待組合的目標數,start是乙個標誌,代表之後從start位開始往後進行,是用來防止重複的。out是當前陣列的狀態。遞迴基有兩個,當target小於0時,表示已經不存在了,直接返回;當target等於0時,表示當前的out已經滿足,將其加入到ans中並返回。當target大於0時不滿足遞迴基,正常進行,從start位開始往後進行for迴圈,分別將每乙個數加入out,並將新的引數傳入進行dfs,待dfs這行執行完後,將out進行pop_back,把尾部的數取出,並準備在下一輪for迴圈加入新的數。結束後最終返回ans。

class solution 

void dfs(vector& candidates, int target, int start, vector& out, vector>& ans)

for(int i = start; i < candidates.size(); i++)

}};

LeetCode 39 組合總和

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

leetcode39 組合總和

參考 class solution if next num.size target num next 0 邊界條件 return 對於每個元素,有兩種處理方式,選當前元素或者不選當前元素 psol.push back num next 選當前元素 search num,next,psol,targe...

LeetCode39組合總和

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