又是dfs水题。
class Solution {
public:vector<int> temp;
void dfs(vector<vector<int>>& res, vector<int>& candidates, int sum, int pos, int target) {
if (sum == target) {
res.push_back(temp);
return;
}
if (sum > target)
return;
for (int i = pos; i < candidates.size(); ++i) {
temp.push_back(candidates[i]);
dfs(res, candidates, sum + candidates[i], i, target);
temp.pop_back();
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
vector<vector<int>> res;
temp.clear();
dfs(res, candidates, 0, 0, target);
return res;
}
};
本文介绍了一个使用深度优先搜索(DFS)实现的算法,该算法用于寻找所有可能的数组合,这些组合能加起来等于给定的目标值。通过递归的方式,算法遍历候选数字列表并累积总和,当总和等于目标值时记录下当前的组合。
5万+

被折叠的 条评论
为什么被折叠?



