78. Subsets

来源:互联网 发布:手机如何彻底卸载软件 编辑:程序博客网 时间:2024/05/22 15:43

2刷的时候要用更好的dfs方法,我的dfs方法会有很多重复,所以用了set解决,时间会慢的,所以要2刷!

class Solution {public:    vector<vector<int>>fve;    set<vector<int>>ve;    vector<int>vee;    void dfs(vector<int>& nums, int k, int now, int num){        vee.push_back(nums[now]);        if(num + 1 == k){            ve.insert(vee);        }        else{            for(int i = now + 1; i < nums.size(); ++ i)                dfs(nums, k,  i, num + 1);        }        vee.pop_back();        if(now + 1 < nums.size())        dfs(nums, k, now + 1, num);    }    vector<vector<int>> subsets(vector<int>& nums) {        ve.insert(vee);        for(int i = 1; i <= nums.size(); ++ i){            vee.clear();            dfs(nums, i, 0, 0);        }        for(set<vector<int>>::iterator it = ve.begin(); it != ve.end(); ++ it){            vee = *it;            fve.push_back(vee);        }        return fve;    }};
0 0
原创粉丝点击