本文共 1358 字,大约阅读时间需要 4 分钟。
Combinations
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],]Java代码:
public static List
> combine(int n, int k) { List result = new LinkedList
(); if (n < k || k == 0 || n == 0) return null; return combineUTL(1, n, k); } public static List
> combineUTL(int start, int end, int k) { List
> list = new ArrayList
>(); if (start > end || k == 0 || end - start + 1 < k) return null; if (end - start + 1 == k) { List list_over = new ArrayList<>(); for (int i = start; i <= end; i++) list_over.add(i); list.add(list_over); } else { List
> list_1 = combineUTL(start + 1, end, k - 1); if (null != list_1) { for (List list_tmp : list_1) { list_tmp.add(0, start); } } else { if (k - 1 == 0) { list_1 = new ArrayList
>(); List list_tmp = new ArrayList<>(); list_tmp.add(start); list_1.add(list_tmp); } } List
> list_2 = combineUTL(start + 1, end, k); if (null != list_1) list.addAll(list_1); if (null != list_2) list.addAll(list_2); } return list; } public static void main(String[] arqs) { List
> result = combine(4, 2); for (List list : result) { System.out.print("{"); for (Integer i : list) { System.out.print(i + ","); } System.out.print("}\n"); } }
转载地址:http://niuni.baihongyu.com/