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], ]
一看就是一道时间复杂度要蹭蹭涨的题。。
我自己的解法太蠢了…就不挂出来丢人了,在leetcode讨论区看到一份答案觉得很秀,分享一下,另外附上链接很秀的答案
好奇这位老哥怎么想的…
public class Solution {
public List<List<Integer>> combine(int n, int k) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
if (k > n || k < 0) {
return result;
}
if (k == 0) {
result.add(new ArrayList<Integer>());
return result;
}
result = combine(n - 1, k - 1);
for (List<Integer> list : result) {
list.add(n);
}
result.addAll(combine(n - 1, k));
return result;
}
}