leetcode 77

98 阅读1分钟

class ou:
    def combine(n: int, k: int):

        # 定义一个result集合,用来保存所有可能存在的结果集
        result = []
        def backTrack(first:int, curList: list):
            # 终止条件 当当前列表长度 = k 时 说明当前列表满足条件,保存当前列表的结果集
            if len(curList) == k:
                result.append(curList[:])

            # 遍历从 first 到 n的所有整数。
            for i in range(first, n+1):
                # 将 i 添加到现有的集合中
                curList.append(i)
                # 递归调用,从 i+1 - n 中获取剩余可能的集合
                backTrack(i+1,curList)
                # 回溯法在本轮递归调用完成后需要将 i 从列表中抛出
                curList.pop()

        # 定义完回溯方法后,正式调用方法
        backTrack(1,[]);
        # 返回所有满足条件的组合
        return result

if __name__=='__main__':
    print(ou.combine(5,3))