必威体育Betway必威体育官网
当前位置:首页 > IT技术

77. Combinations

时间:2019-06-24 06:43:10来源:IT技术作者:seo实验室小编阅读:55次「手机版」
 

combinations

https://leetcode.com/problems/combinations/description/

给n,k,输出1~n之间的所有k组合。

思路:回溯。构建一个1~n的有序数组,每次递归处理下一位,保证不重复。


class Solution:
    def combine(self, n, k):
        """
        :type n: int
        :type k: int
        :rtype: List[List[int]]
        """
        self.res = []  #全局结果。写在函数外部会被修改,不知道为何
        nums = [i for i in range(1, n + 1)]
        tmpList = []
        self.backtrack(nums, tmpList, k, 0)
        return self.res

    def backtrack(self, nums, tmpList, k, start):  #从start开始
        if len(tmpList) == k:
            self.res.APPend(list(tmpList))  #复制一份,写入res
        else:
            for i in range(start, len(nums)):
                tmpList.append(nums[i])
                self.backtrack(nums, tmpList, k, i + 1)  #递归,从i后一位开始
                tmpList.pop()

相关阅读

itertools.combinations()结构及上下文||组合

itertools 官方文档 itertools是2.3版本加入的用于创建循环用迭代器的函数模块。itertools 模块提供的迭代器函数有以下几种类

分享到:

栏目导航

推荐阅读

热门阅读