这种题与
类似利用递归:
class Solution:
def combine(self, n, k):
"""
:type n: int
:type k: int
:rtype: List[List[int]]
"""
if k == 0:
return [[]]
if k > n:
return [[]]
if k == n:
return [[i+1 for i in range(n)]]
result = []
cur = []
self.f(n,k,0,cur,result)
return result
def f(self, n, k, i, cur, result):
if len(cur) == k:
a = cur.copy()
result.append(a)
return
# 优化技巧
for j in range(i,n - (k-len(cur))+1):
cur.append(j+1)
self.f(n,k,j+1,cur,result)
# 弹出最后一个
cur.pop()