题目描述
题目难度:Medium
Given two integers n and k, return all possible combinations of k numbers out of 1 … n.
- Example:
Input: n = 4, k = 2
Output:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
AC代码
class Solution {
public List<List<Integer>> combine(int n, int k) {
List<List<Integer>> resList = new ArrayList<>();
if(n <= 0 || k <= 0 || n < k) return resList;
backtracing(n, k, 1, new ArrayList<Integer>(), resList);
return resList;
}
private void backtracing(int n, int k, int start, List<Integer> tmpList, List<List<Integer>> resList){
if(k == tmpList.size()) {
resList.add(new ArrayList<>(tmpList));
return;
}
for(int i = start;i <= n;i++){
tmpList.add(i);
backtracing(n, k, i + 1, tmpList, resList);
tmpList.remove(tmpList.size() - 1);
}
}
}