subsets 1、2,全子集问题

来源:互联网 发布:像拍立得滤镜软件 编辑:程序博客网 时间:2024/06/10 21:29

subsets1:

class Solution {public:    /*     * @param nums: A set of numbers     * @return: A list of lists     */    vector<vector<int>> subsets(vector<int> &nums) {        // write your code here        //存放结果的results ,和子集 subset        vector<vector<int>> results;        vector<int> subset;        //检测是否空//        if(nums.size()==0) return results;        Dfs(nums,0,subset,results);        return results;    }    void Dfs(vector<int> &nums,             int firstindex,             vector<int> &subset,             vector<vector<int>> &results){                 results.push_back(subset);                 for(int i = firstindex ; i < nums.size() ; i++){                     subset.push_back(nums[i]);                     Dfs(nums,i+1,subset,results);                     subset.pop_back();                 }             return;         }};


subsets2:

class Solution {public:    /*     * @param nums: A set of numbers.     * @return: A list of lists. All valid subsets.     */    vector<vector<int>> subsetsWithDup(vector<int> &nums) {        // write your code here        vector<int> subset;        vector<vector<int>> results;                //if(nums.size() == 0){          //  return results;        //}        sort(nums.begin(),nums.end());        DFS(nums,0,subset,results);        return results;    }    void DFS(vector<int> &nums,             int startindex,             vector<int> &subset,             vector<vector<int>> &results){        results.push_back(subset);        for(int i = startindex;i < nums.size();i++){            if(i != 0 && nums[i] == nums[i-1] && i > startindex ){                continue;            }            subset.push_back(nums[i]);            DFS(nums,i+1,subset,results);            subset.pop_back();            }        }};


原创粉丝点击