LeetCode(78) Subsets

来源:互联网 发布:java爬虫书籍推荐 编辑:程序博客网 时间:2024/05/18 01:05

在主函数中多次调用LeetCode(77) Combinations函数即可,本题没有多大研究意义。

代码如下:

class Solution {public:    void dfs(vector<int> &nums,  int index, int depth, int k, vector<int> &tmpVectorint, vector<vector<int>> &result) {        if(depth == k) {                return;        }        if(nums.size() - index < k - depth)            return;        for(int i = index; i < nums.size(); i++) {            tmpVectorint[depth] = nums[i];            if(depth == k - 1) {                //缺少这个步骤让我在这道题上花费好多时间。哎╮(╯▽╰)╭                vector<int> tmp(tmpVectorint.begin(), tmpVectorint.end());                //reverse(tmp.begin(), tmp.end());                sort(tmp.begin(), tmp.end());                cout << tmp[0] << endl;                cout << tmp[1] << endl;                result.push_back(tmp);                continue;            }            dfs(nums, i + 1, depth + 1, k, tmpVectorint, result);        }    }    void combine(vector<int>& nums, int k, vector<vector<int>> &result) {        //vector<int> nums;        //for(int i = n; i > 0; i--)             //nums.push_back(i);        //vector<vector<int>> result;        vector<int> tmpVectorint(k, 0);        dfs(nums, 0, 0, k, tmpVectorint, result);        //reverse(result.begin(), result.end());        //result;    }    vector<vector<int>> subsets(vector<int>& nums) {        sort(nums.begin(), nums.end());        vector<vector<int>> result;        for(int k = 1; k <= nums.size(); k++)            combine(nums, k, result);        vector<int> emptyVector;        result.insert(result.begin(), emptyVector);        return result;    }};
0 0
原创粉丝点击