#152 Combinations

来源:互联网 发布:朋克乐队 知乎 编辑:程序博客网 时间:2024/04/28 01:05

题目描述:

Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

Example

For example,
If n = 4 and k = 2, a solution is:
[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]

题目思路:

这题我就用recursion做了,每次都挑一个数放入vector sofar中,看看是不是符合要求,如果符合要求就塞到ans中。

Mycode(AC = 16ms):

class Solution {public:    /**     * @param n: Given the range of numbers     * @param k: Given the numbers of combinations     * @return: All the combinations of k numbers out of 1..n     */    vector<vector<int> > combine(int n, int k) {        // write your code here        vector<vector<int>> ans;        if (k == 0) return ans;                vector<int> sofar;        combine(ans, sofar, n, k, 1);        return ans;    }        void combine(vector<vector<int>>& ans,                 vector<int>& sofar,                 int n,                 int k,                 int start)    {        if (k == 0) {            ans.push_back(sofar);            return;        }                for (int i = start; i <= n; i++) {            sofar.push_back(i);            combine(ans, sofar, n, k - 1, i + 1);            sofar.pop_back();        }    }};


0 0