See More

class Solution { public List> combinationSum(int[] candidates, int target) { List> result = new ArrayList<>(); Arrays.sort(candidates); backtrack(candidates, result, new ArrayList(), target, 0); return result; } public void backtrack(int [] candidates, List> result, List temp, int stepDiff, int start) { if(stepDiff < 0) return; else if(stepDiff == 0) result.add(new ArrayList(temp)); else { for(int i=start; i