k Sum II

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

Solutions: DFS

Time Complexity?

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

    public void kSumIIHelper(ArrayList < Integer > curr, int index, int A[], int k,
    int target, ArrayList < ArrayList < Integer >> result) {
    	if (curr.size() == k) {
    		if (target == 0) {
    			result.add(new ArrayList < > (curr));
    		}
    		return;
    	}
    	for (int i = index; i < A.length; i++) {
    		curr.add(A[i]);
    		kSumIIHelper(curr, i + 1, A, k, target - A[i], result);
    		curr.remove(curr.size() - 1);
    	}
    }

 

FacebookTwitterGoogle+Share