77. Combinations
做题历程:
- 应该做了不止2次了,本次大概耗时13分钟,独立解出
本题是纯粹的基本功题,就是考dfs,下次要尝试iterative dfs 本次省功夫,直接用的recursive dfs,代码如下:
class Solution {
public:
vector<vector<int>> combine(int n, int k) {
vector<int> tmp;
dfs(n, k, tmp, 1);
return res;
}
private:
vector<vector<int>> res;
void dfs(const int n, const int k, vector<int>& tmp, int num) {
if (tmp.size() == k) {
res.push_back(tmp);
return;
}
for (int i = num; i <= n - (k - tmp.size()) + 1; ++i) {
tmp.push_back(i);
dfs(n, k, tmp, i + 1);
tmp.pop_back();
}
}
};