Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.
Ensure that numbers within the set are sorted in ascending order.
Example 1:
Input: k = 3, n = 7
Output:
[[1,2,4]]
Example 2:
Input: k = 3, n = 9
Output:
[[1,2,6], [1,3,5], [2,3,4]]
public class Solution { public List<List<Integer>> combinationSum3(int k, int n) { List<List<Integer>> res=new ArrayList<List<Integer>>(); if(n>45 || k>9) return res; List<Integer> temp=new ArrayList<Integer>(); select_num(k,1,n, temp, res); return res; } public void select_num(int k,int idx,int n, List<Integer> temp, List<List<Integer>> res) { if(n<0) return; if(k==0&& n==0) { List<Integer> temp_new=new ArrayList<Integer>(temp); res.add(temp_new); return; } if(idx>9) return; temp.add(idx); select_num(k-1,idx+1,n-idx,temp,res); temp.remove(temp.size()-1); select_num(k,idx+1,n,temp,res); } }