This question is of combination sum. I tried it through recursion and backtracking but my output is becoming an empty list of lists every time.
public class CombinationSum {
public static void main(String[] args) {
int[] candidates = {2,3,6,7};
System.out.println(combinationSum(candidates,8));
}
public static List<List<Integer>> combinationSum(int[] candidates, int target) {
List<List<Integer>> ans = new ArrayList<>();
List<Integer> currComb = new ArrayList<>();
getResult(candidates,target,currComb,0,0,ans);
return ans;
}
public static void getResult(int[] candidates,int target, List<Integer> currComb, int currSum, int currIndex,List<List<Integer>> ans) {
if (currSum > target) {
return;
}
if (currSum == target) {
ans.add(currComb);
return;
}
for (int i = 0; i < candidates.length ; i++) {
currComb.add(candidates[i]);
currSum += candidates[i];
getResult(candidates, target, currComb, currSum, i, ans);
currComb.remove(currComb.size() -1);
currSum -= candidates[i];
}
}
}