1、描述
给定n个不同的正整数,整数k(1<=k<=n1<=k<=n)以及一个目标数字。
在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案。
来源
2、关键字
k个数求和,
3、思路
回溯
4、notes
1、把
vector<int>res // 结果集
先写出来
2、把dfs调用函数搞出去
5、复杂度
时间:
空间:
6、code
class Solution {
public:
vector<vector<int>>res;
vector<vector<int>> kSumII(vector<int> &A, int k, int target) {
vector<int>path;
dfs(A, k, target, 0, path);
return res;
}
void dfs(vector<int>& nums,int k, int target, int m, vector<int>& path){
if(k == 0 && target == 0) {
res.push_back(path);
}
if(k < 0 || target < 0) return;
for(int i = m; i < nums.size(); i++){
vector<int> tmp = path;
tmp.push_back(nums[i]);
dfs(nums,k-1, target - nums[i], i + 1, tmp);
}
}
};