代码随想录算法训练营第24天| 77. 组合

  • 今日学习的文章链接,或者视频链接

腾讯文档

  • 自己看到题目的第一想法

  • 看完代码随想录之后的想法

回溯法模板:

代码随想录算法训练营第24天| 77. 组合_第1张图片

代码随想录算法训练营第24天| 77. 组合_第2张图片

class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        result = []
        path = []
        def backtracking(n, k, startidx):
            #终止条件
            if len(path) == k:
                result.append(path[:])
                return

            # 剪枝, 最后k - len(path)个节点直接构造结果,无需递归
            #last_startidx = n - (k - len(path)) + 1

            #递归逻辑
            for x in range(startidx, n+1):
                path.append(x)
                backtracking(n, k, x + 1)  # 递归
                path.pop()  # 回溯

        backtracking(n, k, 1)
        return result

  • 自己实现过程中遇到哪些困难

path[:] vs path:

代码随想录算法训练营第24天| 77. 组合_第3张图片

  • 今日收获,记录一下自己的学习时长

开启回溯

你可能感兴趣的:(算法,leetcode,职场和发展)