您的位置:首页 > 其它

[leetcode] 77. Combinations 解题报告

2015-12-20 15:31 363 查看
题目链接:https://leetcode.com/problems/combinations/

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],
]


思路:DFS + 回溯. 每到一个新的位置可以取当前的值, 也可以不取, 这样当我们拿够了k个数就可以加到结果集合中去. 如果当前的位置大于了最大值, 就可以退出了.

代码如下:

class Solution {
public:
void DFS(int n, int k, int index, vector<int> vec)
{
if(k <= 0) return result.push_back(vec);
if(index > n) return;
DFS(n, k, index+1, vec);
vec.push_back(index);
DFS(n, k-1, index+1, vec);
}

vector<vector<int>> combine(int n, int k) {
if(n <= 0 || k <=0) return {};
DFS(n, k , 1, vector<int>{});
return result;
}
private:
vector<vector<int>> result;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: