题目链接:https://leetcode.com/problems/combinations/
思路:
回溯,直接用回溯递归,注意边界条件。
AC 1ms 100% Java:
class Solution {
private List<List<Integer>> ans=new ArrayList();
public List<List<Integer>> combine(int n, int k) {
helper(n,k,new ArrayList<Integer>(),1);
return ans;
}
public void helper(int n,int k,List<Integer> list,int start){
if(0==k){
ans.add(new ArrayList(list));
return ;
}
for(int i=start;i<=n-k+1;i++){
list.add(i);
helper(n,k-1,list,i+1);
list.remove(list.size()-1);
}
}
}