minor error
========================
public class Solution {
public ArrayList<ArrayList<Integer>> combinationSum(int[] candidates, int target) {
// Start typing your Java solution below
// DO NOT write main() function
Arrays.sort(candidates);
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> backtrack = new ArrayList<Integer>();
backtrack.add(0);
cs(result, candidates, target, backtrack ,0 ,0);
return result;
}
public void cs (ArrayList<ArrayList<Integer>> result, int[] candidates, int target, ArrayList<Integer> backtrack, int pos, int sum) {
if(sum > target)
return;
else if (sum == target){
ArrayList<Integer> temp= new ArrayList<Integer>();
for(int i = 0; i <= pos ; i++){
temp.add(candidates[backtrack.get(i)]);
}
result.add(temp);
return;
}
else if (target < sum) {
return;
}
else{
for (int i = backtrack.get(pos); i < candidates.length; i++) {
if (backtrack.size() > pos+1) { // check if there is already one value
backtrack.set(pos+1, i);
}
else {
backtrack.add(i);
}
cs(result, candidates,target, backtrack, pos+1,sum + candidates[i]);
}
}
}
}