您的位置:首页 > 其它

[LeetCode] 78. Subsets

2016-08-02 17:37 405 查看
思路:

第一个思路DFS, 很经典, 就不多说了. 第二个思路是类似BFS, 每次把上一轮的结果都复制到队尾, 然后再添加新元素.

void dfs(vector<vector<int>>& res, vector<int>& candidate, vector<int>& nums, int start) {
res.push_back(candidate);
for (int i = start; i < nums.size(); i++) {
candidate.push_back(nums[i]);
dfs(res, candidate, nums, i + 1);
candidate.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> candidate;

sort(nums.begin(), nums.end());
dfs(res, candidate, nums, 0);
return res;
}


vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res(1, vector<int>());

sort(nums.begin(), nums.end());
for (int i = 0; i < nums.size(); i++) {
int n = res.size();
for (int j = 0; j < n; j++) {
res.push_back(res[j]);
res.back().push_back(nums[i]);
}
}

return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode dfs bfs