给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合

Posted 小葵花幼儿园园长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合相关的知识,希望对你有一定的参考价值。

class Solution 
public:
    /**
     * 
     * @param n int整型 
     * @param k int整型 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > combine(int n, int k) 
        // write code here
        vector<vector<int>> res;
        if(n<1 || k>n || k<0)
            return res;
        vector<int> path;
        findNum(res,path,n,k,1);
        return res;
    
    void findNum(vector<vector<int>> &res, vector<int> &path, int n, int k, int start)
        if(path.size() == k)
            res.push_back(path);
        
        for(int i=start; i<=n; i++)
            path.push_back(i);
            findNum(res, path, n, k, i+1);
            path.pop_back();
        
    
;

以上是关于给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合的主要内容,如果未能解决你的问题,请参考以下文章

关于n个数里选k个的不同方法及一些思考

数据结构与算法之深入解析“K个逆序对数组”的求解思路与算法示例

Leetcode 629.K个逆序对数组

找到包含所有数字的最小长度子数组

从 n 返回 k 个元素的连续组合的按需算法

LeetCode(77):组合