力扣|输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]问题力给定两个整数n和k,如果name=="__main...n中k个数字的所有可能组合,则返回1。示例:输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]回溯思维的三个步骤回溯1.有效结果:路径长度等于k。2.回溯范围和答案更新3.剪枝条件:经过分析可以发现i应该<=n-(k-len(path))+1详细分析可以参考liweiwei1419的解决方案(文末).Python3代码classSolution:defcombine(self,n:int,k:int)->List[List[int]]:#特别判断ifn<=0ork<=0ork>n:return[]res=[]self.dfs(1,k,n,[],res)returnresdefdfs(self,start,k,n,path,res):#1.validresultiflen(path)==k:res.append(path[:])return#3.pruningforiinrange(start,n-(k-len(path))+2):#2.回溯和更新path.append(i)self.dfs(i+1,k,n,path,res)path.pop()代码地址GitHub链接参考liweiwei1419题解
