Leetcode77.组合
题目描述
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combinations
思路
回溯法,类似全排列的思路。递归地把给定的数组的元素放进一个m的list里面,如果m长度为k,添加进ans,当这一次结束了。把m的上一个添加进去的元素弹出,继续添加下一个元素。
代码
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
ans = []
nn = list([i+1 for i in range(n)])
def dfs(begin,m):
if(len(m)==k):
ans.append(m)
for i in range(begin,len(nn)):
m.append(nn[i])
ss(i+1,m[:])
m.pop(-1)
dfs(0,[])
return ans