Given n unique integers, number k (1<=k<=n) and target.
Find all possible k integers where their sum is target.
Example
Given [1,2,3,4]
, k = 2
, target = 5
. Return:
[
[1,4],
[2,3]
]
class Solution {
private:
void kSumHelper(vector<int> &A, int curIdx, int k, int target, vector<int> &curVtr, vector<vector<int>> &retVtr)
{
if (k == 0)
{
if (target == 0)
{
retVtr.push_back(curVtr);
}
return;
}
for (int i=curIdx; i<A.size(); i++)
{
if (target-A[i] >=0)
{
curVtr.push_back(A[i]);
kSumHelper(A, i+1, k-1, target-A[i], curVtr, retVtr);
curVtr.pop_back();
}
}
}
public:
/**
* @param A: an integer array.
* @param k: a positive integer (k <= length(A))
* @param target: a integer
* @return a list of lists of integer
*/
vector<vector<int> > kSumII(vector<int> A, int k, int target) {
// write your code here
sort(A.begin(), A.end());
vector<int> curVtr;
vector<vector<int>> retVtr;
kSumHelper(A, 0, k, target, curVtr, retVtr);
return retVtr;
}
};