Problem:给两个正数分别为n和k,求出从1,2.......n这n个数字选择k个数字作为一个组合,求出所有的组合。
 
数学问题:排列组合问题,可以得到这样的组合个数为:C(n,k)
 
 
代码实现:递归程序实现。
从1开始遍历到n为止,中间使用tempList保存每一个组合,只有当这个tempList的长度等于k时,将这个tempList添加到ans中。
 
因此该递归程序的出口为:保存暂时组合的数组长度等于k,
递归主要内容为向tempList中添加数字,调用自身,弹出tempList顶层的元素。
 
参考代码:
package leetcode_100;

import java.util.ArrayList;
import java.util.List; public class Solution77 { public List<List<Integer>> combine(int n, int k) {
List<List<Integer>> ans = new ArrayList<List<Integer>>();
match(ans,new ArrayList<Integer>(),1,n,k);
return ans;
} private void match(List<List<Integer>> ans, ArrayList<Integer> arrayList, int start, int n, int k) {
if(k==0){
ans.add(new ArrayList<Integer>(arrayList));
return;
}
for(int i = start ; i <= n ; i++){
arrayList.add(i);
match(ans,arrayList,i+1,n,k-1);
arrayList.remove(arrayList.size()-1);
}
} }

最新文章

  1. Java 继承 执行顺序
  2. js正则函数
  3. Hbase的安装配置
  4. 在jsp页面上直接打开PDF文件
  5. Deep Learning(深度学习)相关网站
  6. jquery拖拽效果
  7. 从Chrome源码看JS Array的实现
  8. HTTP权威指南_Note
  9. [亲测有效] - Linux安装PostgreSQL
  10. 微信小程序之 -----事件
  11. HDU 4336 Card Collector 期望dp+状压
  12. 在 Win 7 下使用 VirtualBOX 虚拟机安装 OS X 10.9 Mavericks 及 Xcode 5
  13. Java多线程之生产者消费者问题&amp;lt;一&amp;gt;:使用synchronized keyword解决生产者消费者问题
  14. SQL Serever学习4
  15. js灵活处理日期(函实例)
  16. 8VC Venture Cup 2016 - Elimination Round G. Raffles 线段树
  17. Jquery获取dom上的绑定事件
  18. (转)libcurl库使用方法,好长,好详细。
  19. IP地址在mysql的存储
  20. Mysql 连接池

热门文章

  1. int[,] 和 int[][] 有什么区别
  2. 正则grep
  3. 相对和绝对路径/cd命令/创建和删除目录mkdir/rmdir/rm命令
  4. c++ String去除头尾空格
  5. GetDlgItem的用法小结
  6. Lynx
  7. 解决win8.1电脑无法安装手机驱动问题
  8. 【转载】MongoDB集群和实战详解
  9. phpcms v9 get的强大之处(列表页调用点击数)
  10. sed在替换的时候,使用变量中的值?如何在sed实现变量的替换?获取到变量中的值?