K数和II——lintcode90
K数和II
题目:K数和II
给定n
个不同的正整数,整数k
(1<=k<=n)以及一个目标数字。
在这n
个数里面找出K
个数,使得这K
个数的和等于目标数字,你需要找出所有满足要求的方案
样例 :
输入:
数组 = [1,2,3,4]
k = 2
target = 5
输出:
[[1,4],[2,3]]
题解:回溯法
public class Solution {
private List<List<Integer>> results;
public void dfs(int[] nums, int start, int k, int sum, int target, List<Integer> result) {
if(result.size()==k) {
if(sum==target) results.add(new ArrayList<>(result));
return;
}
for(int i=start;i<nums.length;i++) {
result.add(nums[i]);
dfs(nums, i+1, k, sum+nums[i], target, result);
result.remove(result.size()-1);
}
}
public List<List<Integer>> kSumII(int[] A, int k, int target) {
results=new ArrayList<>();
if(A==null || A.length==0) return results;
dfs(A, 0, k, 0, target,new ArrayList<>());
return results;
}
}