描述
Your title here…Given n unique integers, number k (1<=k<=n) and target.
Find all possible k integers where their sum is target.
样例
给出[1,2,3,4],k=2, target=5,返回 [[1,4],[2,3]]
代码
使用递归,不断地组合k个数,并判断当前k个数的和与目标值的大小关系。
public class Solution {
/*
* @param A: an integer array
* @param k: a postive integer <= length(A)
* @param targer: an integer
* @return: A list of lists of integer
*/
int k,target;
int[] A;
public List<List<Integer>> kSumII(int[] A, int k, int target) {
// write your code here
List<List<Integer>> result=new LinkedList<>();
if(A==null||A.length==0){
result.add(new LinkedList<Integer>());
return result;
}
int len=A.length;
this.k=k;
this.target=target;
this.A=A;
dfs(0,new LinkedList<>(),0,result);
return result;
}
private void dfs(int i,List<Integer> list,int sum,List<List<Integer>> result){
if(sum>target){
return;
}
if(list.size()==k){
if(sum==target){
result.add(new LinkedList<Integer>(list));
}
return;
}
for(;i<A.length;i++){
list.add(A[i]);
dfs(i+1,list,sum+A[i],result);
list.remove(list.size()-1);
}
}
}
寻找目标和子集
本文介绍了一种使用递归算法解决从给定整数数组中找出所有可能的k个数,使得这k个数的总和等于指定目标值的问题。通过示例说明了算法的工作原理及其实现细节。
3万+

被折叠的 条评论
为什么被折叠?



