給定乙個無重複元素的陣列candidates
和乙個目標數target
,找出candidates
中所有可以使數字和為target
的組合。
candidates
中的數字可以無限制重複被選取。
說明:
示例 1:
輸入:candidates =示例 2:[2,3,6,7],
target =7
,所求解集為:[[7],
[2,2,3]
]
輸入:candidates = [2,3,5]這個題是用dfs解的。先對數進行排序,然後每一次選擇的數為一層,如第一次我選了2或3或6或7,則這一層的乙個節點就為2或3或6或7。,
target = 8,所求解集為:[[2,2,2,2],
[2,3,3],
[3,5]
]
注意的點:
1.要注意剪枝,剪枝條件為 target - candidates[i] < 0。
2.對每個數的下一層選擇,都不選擇比它小的數,要不就會有重複的答案。
class solution
void getsum(vectorcandidates, int target, vector> &result, vector&tmp,int start)
for (int i = start; i < candidates.size(); i++)
getsum(candidates, target - candidates[i], result, tmp, i);
tmp.pop_back();
} return;
}};
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組合總數 python
給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。示例 1 輸入 candid...