回溯法经常和递归在一起用,很重要
77. Combinations
这道题算是backtracking的一道基础题,就是组合出不同的combination
Way1:
用backtracking,每次做递归后要把当前添加的元素删除出去.还有把一个组合放到result的时候要用[:],否则是空的
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
res=[]
path=[]
def backtrack(n,k,start):
if len(path)==k:
res.append(path[:])
return
for i in range(start,n+1):
path.append(i)
backtrack(n,k,i+1)
path.pop()
backtrack(n,k,1)
return res