77
题目:
给定两个整数 n
和 k
,返回范围 [1, n]
中所有可能的 k
个数的组合。
你可以按 任何顺序 返回答案。
思路:
使用回溯算法,纵向使用递归,每次从集合中取一个元素,横向就是for循环,集合中有哪些个数相等的元素
代码:
class Solution {
List<Integer> path = new ArrayList<Integer>();
List<List<Integer>> res = new ArrayList<List<Integer>>();
public List<List<Integer>> combine(int n, int k) {
backtracking(n,k,1);
return res;
}
public void backtracking(int n,int k ,int start)
{
if(path.size()==k)
{
res.add(new ArrayList(path));
return ;
}
for(int i=start;i<=n-(k-path.size())+1;i++)
{
path.add(i);
backtracking(n,k,i+1);
path.removeLast();
}
return ;
}
}