public class Solution {
private List<List<Integer>> result = new ArrayList<List<Integer>>();
private int k;
public List<List<Integer>> combinationSum3(int k, int n) {
List<Integer> list =new ArrayList();
this.k =k;
recurse(list,1,n);
return result;
}
private void recurse(List<Integer> list,int cur,int n)
{
if(list.size() == k && n ==0)
{
result.add(list);
return;
}
if(list.size() == k || n == 0) return;//
//if((list.size()==k && n > 0) ||(list.size()!=k && n==0)) return;
if(list.size() < k)//n>0
{
for(int i=cur;i<=9;i++)
{
int newn = n-i;
if(newn >= 0)
{
List<Integer> copy = new ArrayList(list);
copy.add(i);
recurse(copy,i+1,newn);
}
else
break;
}
}
}
}
private List<List<Integer>> result = new ArrayList<List<Integer>>();
private int k;
public List<List<Integer>> combinationSum3(int k, int n) {
List<Integer> list =new ArrayList();
this.k =k;
recurse(list,1,n);
return result;
}
private void recurse(List<Integer> list,int cur,int n)
{
if(list.size() == k && n ==0)
{
result.add(list);
return;
}
if(list.size() == k || n == 0) return;//
//if((list.size()==k && n > 0) ||(list.size()!=k && n==0)) return;
if(list.size() < k)//n>0
{
for(int i=cur;i<=9;i++)
{
int newn = n-i;
if(newn >= 0)
{
List<Integer> copy = new ArrayList(list);
copy.add(i);
recurse(copy,i+1,newn);
}
else
break;
}
}
}
}