給定乙個陣列 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,...