首页 > 代码库 > LeetCode "Combinations"
LeetCode "Combinations"
Typical recurrsion\DFS problem. Just take care of memory use.
class Solution {public: vector<vector<int>> ret; void go(int currMaxN, int currK, int k, unordered_set<int> set, vector<int> currRet) { if (currK == k) { ret.push_back(currRet); return; } auto it = set.begin(); for (int i : set) { if (i > currMaxN) { vector<int> thisRet = currRet; thisRet.push_back(i); unordered_set<int> thisSet = set; thisSet.erase(i); go(i, currK + 1, k, thisSet, thisRet); } } } vector<vector<int> > combine(int n, int k) { if (k > 0) { unordered_set<int> set; for (int i = 1; i <= n; i++) set.insert(i); for (int i = 1; i <= n - k + 1; i++) { unordered_set<int> currSet = set; currSet.erase(i); vector<int> v; v.push_back(i); go(i, 1, k, currSet, v); } } return ret; }};
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。