博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Combinations
阅读量:4074 次
发布时间:2019-05-25

本文共 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/

你可能感兴趣的文章
[swift实战入门]手把手教你编写2048(二)
查看>>
Java 爬虫入门(网易云音乐和知乎实例)
查看>>
[swift实战入门]手把手教你编写2048(三)
查看>>
堆排序原理(图)及java版代码
查看>>
【JAVA数据结构】栈(数组实现)
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
String类的intern方法随笔
查看>>
【泛型】一个简易的对象间转换的工具类(DO转VO)
查看>>
1.随机函数,计算机运行的基石
查看>>
MouseEvent的e.stageX是Number型,可见as3作者的考虑
查看>>
在mc中直接加aswing组件,该组件还需最后用validate()方法
查看>>
移植Vim配色方案到Eclipse
查看>>
从超链接调用ActionScript
查看>>
谈谈加密和混淆吧[转]
查看>>
TCP的几个状态对于我们分析所起的作用SYN, FIN, ACK, PSH,
查看>>
网络游戏客户端的日志输出
查看>>
关于按钮的mouseOver和rollOver
查看>>
《多线程服务器的适用场合》例释与答疑
查看>>
Netty框架
查看>>