描述
Given n unique integers, number k (1<=k<=n) and target.
Find all possible k integers where their sum is target.
您在真实的面试中是否遇到过这个题?
是
样例
给出[1,2,3,4],k=2, target=5,返回 [[1,4],[2,3]]
思路:DFS,递归
代码:
class Solution {
public:
/*
* @param A: an integer array
* @param k: a postive integer <= length(A)
* @param target: an integer
* @return: A list of lists of integer
*/
vector<vector<int>> kSumII(vector<int> &A, int k, int target) {
// write your code here
vector<vector<int> >result;
vector<int>temp;
DFS(A,k,target,0,0,result,temp);
return result;
}
void DFS(vector<int> &A, int k, int target,int sum,int index,vector<vector<int> >&result,vector<int>&temp)
{
if(temp.size()==k&&sum==target)
{
result.push_back(temp);
return ;
}
if(index==A.size()||sum>target)
return;
temp.push_back(A[index]);
DFS(A,k,target,sum+A[index],index+1,result,temp);
temp.pop_back();
DFS(A,k,target,sum,index+1,result,temp);
}
};