您的位置:首页 > 其它

Lintcode - k sum II

2015-02-09 14:42 281 查看
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, [1,4] and [2,3] are possible solutions.

public ArrayList<ArrayList<Integer>> kSumII(int A[], int k, int target) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
helper(result, new ArrayList<Integer>(), A, k, target, 0, 0);
return result;
}

void helper(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> preResult,
int A[], int k, int target, int count, int start) {
if (count == k && target == 0) {
result.add(preResult);
return;
}
if (count >= k || target < 0) {
return;
}

for (int i = start; i < A.length; i++) {
if (target - A[i] >= 0) {
ArrayList<Integer> newResult = new ArrayList<Integer>(preResult);
newResult.add(A[i]);
helper(result, newResult, A, k, target-A[i], count+1, i+1);
} else {
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: