leetcode组合

版权声明: https://blog.csdn.net/hsc_1/article/details/82949253

给定两个整数 n 和 k,返回 1 ... 中所有可能的 k 个数的组合。

示例:

输入: n = 4, k = 2
输出:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]

 

其实中间的,for i in range(cur, n-k+2) 把中间的n-k+2换成n+1也可以accept的,但是呢,这样是不是可以减少些不必要的计算呢

class Solution:
    def combine(self, n, k):
        """
        :type n: int
        :type k: int
        :rtype: List[List[int]]
        """
        cur = 1
        path = []
        res = []
        self.func(n, k, 1, path, res)
        return res
        
    def func(self, n, k, cur, path, res):
        if k == 0:
            res.append(path)
            return
        for i in range(cur, n - k + 2):
            self.func(n, k-1, i + 1, path + [i], res)

猜你喜欢

转载自blog.csdn.net/hsc_1/article/details/82949253