2017.9.29
还是使用的递归的方式
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
*/
public List<List<Integer>> kSumII(int[] A, int k, int targer) {
// write your code here
List<List<Integer>> res = new LinkedList<>();
if(A.length == 0 || k > A.length || k <= 0){
List<Integer> tmp = new LinkedList<>();
res.add(tmp);
return res;
}
if(k == 1){
for(int x : A){
if(x == targer){
List<Integer> tmp = new LinkedList<>();
tmp.add(x);
res.add(tmp);
}
}
return res;
}
else{
while(A.length >= 1){
int num = A[0];
A = Arrays.copyOfRange(A, 1, A.length);
List<List<Integer>> list = kSumII(A,k-1,targer-num);
for(List<Integer> listTmp : list){
if(!listTmp.isEmpty()){
listTmp.add(num);
res.add(listTmp);
}
}
}
}
return res;
}
}