题目来源:

  https://leetcode.com/problems/combinations/


题意分析:

  给定一个n和k,输出1到n的所有k个数的组合。比如n = 4,k=2

[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]

题目思路:

  这道题目用递归的思想来做。比如我们把n当成一个数字[1,2,...,n],如果组合包括1那么[2,..,n]和k-1的所有答案添加一个1;如果组合不包括1,那么答案是[2,...,n]和k的组合。然后将两个组合结合起来就可以了。初始化,如果n == k,那么组合就是直接所有的数,如果k == 1,那么组合是每一个数。


代码(Python):

  

 class Solution(object):
def combine(self, n, k):
"""
:type n: int
:type k: int
:rtype: List[List[int]]
"""
def solve(index,n,k):
ans = []
if k == n - index + 1:
t = []
for i in range(k):
t.append(index)
index += 1
ans.append(t)
return ans
if k == 1:
while index <= n:
ans.append([index])
index += 1
return ans
tmp1,tmp2 = solve(index + 1,n,k),solve(index + 1,n,k-1)
for i in tmp1:
ans.append(i)
for i in tmp2:
i = [index] + i
ans.append(i)
return ans
return solve(1,n,k)

转载请注明出处:http://www.cnblogs.com/chruny/p/5088520.html

最新文章

  1. Mac使用极简教程
  2. Git 取消跟踪已版本控制的文件
  3. [Android]官网《Testing Support Library》中文翻译
  4. C#------各种常见错误解决方法
  5. 关于checkbox与文字混排无法对齐的解决方法
  6. VS2010中如何查看DLL的导出接口
  7. android 添加背景音乐
  8. Win下循环进入目录启动执行某任务
  9. Hello World---C/C++
  10. MongoVUE简单操作手册
  11. sql优化-总结
  12. 浅谈Django的Q查询以及AngularJS的Datatables分页插件
  13. asp.net 验证码技术
  14. phpcms基础
  15. 从小故事来谈nginx负载均衡
  16. 怎么动态生成js变量
  17. HttpClient学习--HttpClient的POST请求过程源码解读
  18. php 文件上传 $_FILES 错误码
  19. Fix problems that block programs from being installed or removed
  20. POJ 2752 Seek the Name, Seek the Fame(KMP中next的理解)题解

热门文章

  1. Review1-11
  2. android 屏幕适配问题【转】
  3. 我的小前端 (2)—— JQ和zepto
  4. WPF属性与特性的映射(TypeConverter)
  5. MySQL5.7.11(ZIP)安装
  6. 一周学会Mootools 1.4中文教程:(1)Dom选择器
  7. 在python文本编辑器里如何设置Tab为4个空格
  8. &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Frameset//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd&quot;&gt;的含义
  9. docker10件事
  10. LintCode-数组划分