【leetcode】77.组合

文章目录

    • 题目
    • 题解
      • [1. 回溯](#1. 回溯)
      • [2. 剪枝优化](#2. 剪枝优化)

题目

77.组合

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

你可以按 任何顺序 返回答案。

示例 1:

输入:n = 4, k = 2

输出:

\[2,4\], \[3,4\], \[2,3\], \[1,2\], \[1,3\], \[1,4\],

示例 2:

输入:n = 1, k = 1

输出:[[1]]

题解

1. 回溯

python 复制代码
class Solution(object):
    def combine(self, n, k):
        """
        :type n: int
        :type k: int
        :rtype: List[List[int]]
        """
        result = []
        path = []
        start = 1
        def backtracking(n, k, path, start, result):
            if len(path) == k:
                result.append(path[:])
                return 
            
            for i in range(start, n + 1):
                path.append(i)
                backtracking(n, k, path, i + 1, result)
                path.pop()


        if n == 1:
            return [[1]]
        backtracking(n, k, path, start, result)
        return result
        

2. 剪枝优化

python 复制代码
n + 1 - (k - len(path)) + 1
python 复制代码
class Solution(object):
    def combine(self, n, k):
        """
        :type n: int
        :type k: int
        :rtype: List[List[int]]
        """
        result = []
        path = []
        start = 1
        def backtracking(n, k, path, start, result):
            if len(path) == k:
                result.append(path[:])
                return 
            
            for i in range(start, n + 1 - (k - len(path)) + 1):
                path.append(i)
                backtracking(n, k, path, i + 1, result)
                path.pop()


        if n == 1:
            return [[1]]
        backtracking(n, k, path, start, result)
        return result
        
相关推荐
无限进步_20 小时前
【C语言&数据结构】对称二叉树:镜像世界的递归探索
c语言·开发语言·数据结构·c++·git·算法·visual studio
星辞树20 小时前
揭秘阿里 DIN:当深度学习遇上“千物千面”
算法
刘立军20 小时前
如何选择FAISS的索引类型
人工智能·算法·架构
小芒果_0120 小时前
整理归并排序
c++·算法·排序算法·信息学奥赛
牛三金20 小时前
匿踪查询沿革-Private Information Retrieval(PIR)
算法·安全
德育处主任20 小时前
『NAS』在群晖部署一个文件加密工具-hat.sh
前端·算法·docker
星辞树21 小时前
从 L1/L2 到 Dropout:深度解析正则化,为何推荐系统“只能练一次”?
算法
玖剹21 小时前
队列+宽搜(bfs)
数据结构·c++·算法·leetcode·宽度优先
mit6.82421 小时前
01bfs|前缀和的前缀和
算法
wen__xvn21 小时前
代码随想录算法训练营DAY11第五章 栈与队列part02
算法