public class Leetcode77 {
public List<List<Integer>> combine(int n, int k) {
List<List<Integer>> res = new ArrayList<>();
backtrack(res, n, 1, k, new ArrayList<Integer>());
return res;
}
/**
* 77的私有方法
*
* @param res 结果
* @param n 1-n的组合 n
* @param num 当前数
* @param k 组合长度
* @param list 存组合的变量
*/
private static void backtrack(List<List<Integer>> res, int n, int num, int k, List<Integer> list) {
if (list.size() == k) {
//将符合的数组 创建新的对象 放入结果集
res.add(new ArrayList<>(list));
} else {
for (int i = num; i <= n; i++) {
//添加符合条件的元素
list.add(i);
//本地没达到K长度 继续递归查询
backtrack(res, n, i + 1, k, list);
//当递归结束之后 删除本次添加的元素 添加下一位元素 组成新的数组
list.remove(list.size() - 1);
}
}
}
}
LeetCode77
最新推荐文章于 2024-05-21 22:13:42 发布