版权声明: https://blog.csdn.net/hsc_1/article/details/82949253
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 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)