LeetCode Combinations
2016-01-23 21:07
387 查看
LeetCode解题之Combinations
原题
求在1到n个数中挑选k个数的所有的组合类型。注意点:
每个数字只能够用一遍
组合的排列没有顺序要求
例子:
输入: n = 4, k = 2
输出: [[1, 4], [2, 4], [3, 4], [1, 3], [2, 3], [1, 2]]
解题思路
采用递归的方式,在n个数中选k个,如果n大于k,那么可以分类讨论,如果选了n,那么就是在1到(n-1)中选(k-1)个,否则就是在1到(n-1)中选k个。递归终止的条件是k为1,这时候1到n都符合要求。AC源码
[code]class Solution(object): def combine(self, n, k): """ :type n: int :type k: int :rtype: List[List[int]] """ if k == 1: return [[i + 1] for i in range(n)] result = [] if n > k: result = [r + for r in self.combine(n - 1, k - 1)] + self.combine(n - 1, k) else: result = [r + for r in self.combine(n - 1, k - 1)] return result if __name__ == "__main__": assert Solution().combine(4, 2) == [[1, 4], [2, 4], [3, 4], [1, 3], [2, 3], [1, 2]]
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
相关文章推荐
- HDU NO.2037 今年暑假不AC(时间序列贪心),,,
- 【UOJ 34】多项式乘法
- 找出N内的所有完数
- SSH——Hibernate初学者之旅(六)
- 每一个css样式写完都要写分号!!!
- 测试 arduino pro mini 的 PWM
- websphere性能优化方案
- vector size陷阱 -1>0问题
- 小娜学法(13):什么人确定有罪?
- Json概述以及python对json的相关操作
- leetcode之Remove Nth Node From End of List
- 01-FTP
- 烟波钓叟赋注解。
- cannot reload avd list问题
- POJ1860-Currency Exchange(bellman-ford求正环)
- Enum:Fliptile(POJ 3279)
- 设计模式——行为型模式(一)
- zhu的工作日记:volley浅解(android)
- 自来水“不能说的秘密”
- Intent 与 PendingIntent 的区别