leetcode刷题-77组合

题目

给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。

示例:

输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]

思路

回溯法

实现

class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        num = [i for i in range(1, n+1)]
        tmp = []
        result = []
        def com(idx, bef, aft):
            if len(aft) == k:
                result.append(aft)
            else:
                for i in bef:
                    index = bef.index(i)
                    com(index, bef[(index+1):], aft+[i])
        com(0, num, tmp)
        return result

 

posted @ 2020-08-10 11:02  maoguai  阅读(110)  评论(0编辑  收藏  举报