您的位置:首页 > 其它

Combinations

2015-11-06 13:03 253 查看
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

For example,
If n = 4 and k = 2, a solution is:

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


直接能想到的还是通过递归来做,递归到规定的深度就可以输出。但试运行时间好像不满足要求,代码如下:

class Solution {
public:
vector<vector<int>> combine(int n, int k) {
vector<vector<int>> result;
vector<int> path(k,0);
build(0,k,n,1,path,result);
return result;
}
void build(int dep, int k, int n, int index, vector<int>& path, vector<vector<int>> &result){
if(dep==k){
result.push_back(path);
}
for(int i=index;i<=n;i++){
path[dep]=i;
build(dep+1,k,n,i+1,path,result);
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归