Total Accepted: 67261
Total Submissions: 201946
Difficulty: Medium
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
Subscribe to see which companies asked this question
Show Tags
Show Similar Problems
Have you met this question in a real interview?
Yes
No
求组合数, dfs求解,搜索K的每一位。
public class Combinations {
static List<List<Integer>> ll = new ArrayList<List<Integer>>();
public static void main(String[] args) {
System.out.println(combine(5, 2));
System.out.println(combine(4, 2));
}
public static List<List<Integer>> combine(int n, int k) {
ArrayList<Integer> list = new ArrayList<Integer>();
ll.clear();
dfs(n, k, 0, 1, list);
return ll;
}
private static void dfs(int n, int k, int level, int idx, ArrayList<Integer> list) {
if (level >= k) {
ll.add((ArrayList<Integer>) list.clone());
return;
}
for (int i = idx; i <= n; i++) {
list.add(i);
dfs(n, k, level + 1, i + 1, list);
list.remove(new Integer(i));
}
}
}