结合前面的permutation和combination的DFS来解这道题。
再看看自己都错在哪里了!!!
/**
* @param A: an integer array.* @param k: a positive integer (k <= length(A))
* @param target: a integer
* @return a list of lists of integer
*/
public ArrayList<ArrayList<Integer>> kSumII(int []A, int K, int target) {
ArrayList<ArrayList<Integer>> results = new ArrayList<>();
if (A == null || A.length < K) {
return results;
}
Arrays.sort(A);
kSumIIHelper(A, K , target, results, new ArrayList<Integer>(), 0);
return results;
}
private void kSumIIHelper(int []A, int K, int target, ArrayList<ArrayList<Integer>> results, ArrayList<Integer> list, int index) {
if (list.size() == K) {
if (target == 0) {
//2 results.add(list);
results.add(new ArrayList<Integer>(list));
}
return;
}
for (int i = index; i < A.length; i++) {
list.add(A[i]);
//3 kSumIIHelper(A, K - 1, target - A[i], results, list, i + 1);
kSumIIHelper(A, K, target - A[i], results, list, i + 1);
//1 lsit.remove(list.size() - 1);
list.remove(list.size() - 1);
}
}