77. 组合
解法:回溯+减枝
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
# method 2(减枝)
res = []
path = []
def backtracking(n,k,startindex):
if len(path) == k:
res.append(path[:])
return
endindex = n-(k-len(path))+1
for i in range(startindex,endindex+1):
print(path)
path.append(i)
print('f',path)
backtracking(n,k,i+1)
path.pop()
backtracking(n,k,1)
return res
# #method 1
# path = []
# res = []
# def backtracking(n,k,startindex):
# if len(path) == k:
# res.append(path[:])
# return
# for i in range(startindex,n+1):
# path.append(i)
# backtracking(n,k,i+1)
# path.pop()
# backtracking(n,k,1)
# return res