[LeetCode] 77. 组合

题目描述:

给定两个整数 nk,返回范围 [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 <= n <= 20
  • 1 <= k <= n

题目链接:

. - 力扣(LeetCode)

解题主要思路:

很简单的一道dfs,确定要递归结速条件,是否需要剪枝,什么时候进行递归,如何回溯即可。

解题代码:

cpp 复制代码
class Solution {
public:
    vector<vector<int>> ret;
    vector<int> path;
    int n, k;
    vector<vector<int>> combine(int _n, int _k) {
        n = _n, k = _k;
        dfs(1);
        return ret;
    }
    void dfs(int pos)
    {   
        // 结速条件
        if (path.size() == k) {
            ret.push_back(path);
            return;
        }

        for (int i = pos; i <= n; ++i) {
            path.push_back(i);  
            dfs(i+1);  // 递归
            path.pop_back();  // 回溯
        }
    }
};
相关推荐
你撅嘴真丑8 分钟前
计算2的N次方 和 大整数的因子
数据结构·c++·算法
孞㐑¥13 分钟前
算法—前缀和
c++·经验分享·笔记·算法
CSDN_RTKLIB25 分钟前
【编码实战】编译器解码编码过程
c++
yugi98783828 分钟前
基于MATLAB的延迟求和(DAS)波束形成算法实现
开发语言·算法·matlab
漫随流水35 分钟前
leetcode回溯算法(90.子集Ⅱ)
数据结构·算法·leetcode·回溯算法
Yupureki41 分钟前
《算法竞赛从入门到国奖》算法基础:搜索-记忆化搜索
c语言·c++·学习·算法·深度优先
June bug44 分钟前
(#数组/链表操作)合并两个有重复元素的无序数组,返回无重复的有序结果
数据结构·python·算法·leetcode·面试·跳槽
普贤莲花1 小时前
取舍~2026年第4周小结---写于20260125
程序人生·算法·leetcode
curry____3031 小时前
menset的使用方法
算法
苦藤新鸡1 小时前
39.二叉树的直径
算法·leetcode·深度优先