[Leetcode]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],
]

NP问题,可以用dfs来做,item里的元素到了k个就可以加到结果数组里并且返回~

class Solution:
    # @return a list of lists of integers
    def combine(self, n, k):
        if n <= 0 or n < k: return []
        self.res = []
        self.helper(n, k, 1, [])
        return self.res
        
    def helper(self, n, k, start, item):
        if k == len(item):
            self.res.append(item[:])
            return
        for i in range(start, n+1):
            self.helper(n, k, i+1, item + [i])

还有非递归解法,可以参考http://chaoren.is-programmer.com/posts/42627.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值