leetcode-组合总和

点击:题目链接:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。

思路

回溯加剪枝

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution {
public:
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
vector<int> temp;
Backtracking(candidates, temp, 0,target);
return res;
}

void Backtracking(vector<int>& nums, vector<int>& temp, int index, int target){
if (target == 0) {
res.push_back(temp);
return;
}

if (target < 0) return;

for (int i = index; i < nums.size(); ++i) {
temp.push_back(nums[i]);
target -= nums[i];

Backtracking(nums, temp, i, target);

temp.pop_back();
target += nums[i];
}
return;
}

private:
vector<vector<int>> res;
};

复杂度:
时间:O(N²),空间O(N)

作者

Dylan Zhu

发布于

2021-04-07

更新于

2021-04-17

许可协议

评论

:D 一言句子获取中...