Lintcode: k Sum II
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.
这道题同Combination Sum II
1 public class Solution { 2 /** 3 * @param A: an integer array. 4 * @param k: a positive integer (k <= length(A)) 5 * @param target: a integer 6 * @return a list of lists of integer 7 */ 8 public ArrayList<ArrayList<Integer>> kSumII(int A[], int k, int target) { 9 // write your code here 10 ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); 11 ArrayList<Integer> path = new ArrayList<Integer>(); 12 helper(res, path, A, k, target, 0); 13 return res; 14 } 15 16 public void helper(ArrayList<ArrayList<Integer>> res, ArrayList<Integer> path, int[] A, int k, int remain, int index) { 17 if (path.size() == k) { 18 if (remain == 0) { 19 res.add(new ArrayList<Integer>(path)); 20 } 21 return; 22 } 23 for (int i=index; i<A.length; i++) { 24 path.add(A[i]); 25 helper(res, path, A, k, remain-A[i], i+1); 26 path.remove(path.size()-1); 27 } 28 } 29 }