leetcode 40組合總和二

2021-10-23 03:37:15 字數 1430 閱讀 8633

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

candidates 中的每個數字在每個組合中只能使用一次。

說明:

所有數字(包括目標數)都是正整數。

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

示例 1:

輸入: candidates = [10,1,2,7,6,1,5], target = 8,

所求解集為:

[ [1, 7],

[1, 2, 5],

[2, 6],

[1, 1, 6]

]

示例 2:

輸入: candidates = [2,5,2,1,2], target = 5,

所求解集為:

[ [1,2,2],

[5]]

方法1:參考leetcode39**,對索引那裡修改為i+1,然後增加set。這樣做速度會比較慢。

class

solution

private

: vectorint>> res;

setint>> res1;

//l為索引位

void

findcombinationsum

(vector<

int>

&candidates,

int target,

int l, vector<

int>

&t)return;}

for(

int i = l; i < candidates.

size()

; i++

)return;}

};

方法2:相比方法1去掉set,再迴圈裡面加一句話

if(i > l && candidates[i] == candidates[i-1]) continue;

這句話可以避免重複項仔細思考,一開始我寫成了 i > 0 ,實際上應該是l參考方法,這是因為l是索引位。需要細細體會。

class

solution

private

: vectorint>> res;

//l為索引位

void

findcombinationsum

(vector<

int>

&candidates,

int target,

int l, vector<

int>

&t)for

(int i = l; i < candidates.

size()

; i++

)return;}

};

leetcode 40 組合總和

給定乙個陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的每個數字在每個組合中只能使用一次。說明 示例 1 輸入 candidates 10,1,2,7,6,1,5 target 8,所求解集為 1,7 1,2,...

leetcode40 組合總和 II

給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。說明 所有數字 包括目標數 都是正整數。解集不能包含重複的組合。示例 1 輸入 candidates 1...

LeetCode 40 組合總和 II

給定乙個陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的每個數字在每個組合中只能使用一次。說明 示例 1 輸入 candidates 10,1,2,7,6,1,5 target 8,所求解集為 1,7 1,2,...