Chinaunix首页 | 论坛 | 博客
  • 博客访问: 270056
  • 博文数量: 170
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1709
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-06 18:01
文章分类

全部博文(170)

文章存档

2016年(11)

2015年(130)

2014年(29)

分类: Java

2015-03-20 15:28:48

Combinations

 Total Accepted: 36487 Total Submissions: 119636My Submissions
Question Solution 


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],
]
思路:
针对每一个数字都作为第一个进行遍历,然后向后遍历下一个可能有,也有可能没有的。
 public List> combine(int n, int k) {
 List> result=new ArrayList();
 if(n<=0&&k<=0&&k>n)
//返回空的链表也不要返回null
 return Collections.emptyList();
 for(int e=1;e<=n;e++){
 List element=new ArrayList();
 element.add(e);
 recurTraverse(n,k-1,e+1,result,element);
  
 }
 return result;
 }
 private void recurTraverse(int n, int i, int j, List> result, List element) {
 // TODO 自动生成的方法存根
 
 if(0==i){
 result.add(element);
 return;
 }
 if(j>n)
 return;
//保留当前的element值,给有这个值用
 List temp=new ArrayList(element);
 recurTraverse(n, i, j+1, result, element);
 
 temp.add(j);
 recurTraverse(n,i-1,j+1,result,temp);
 
 
 }

阅读(222) | 评论(0) | 转发(0) |
0

上一篇:Anagrams

下一篇:Valid Number

给主人留下些什么吧!~~