Leetcode_subsets

来源:互联网 发布:航盛导航端口 编辑:程序博客网 时间:2024/06/10 01:19

地址:http://oj.leetcode.com/problems/subsets/

Given a set of distinct integers, S, return all possible subsets.

Note:

  • Elements in a subset must be in non-descending order.
  • The solution set must not contain duplicate subsets.

For example,
If S = [1,2,3], a solution is:

[  [3],  [1],  [2],  [1,2,3],  [1,3],  [2,3],  [1,2],  []]
思路:用递归来解决,S的size为n,则一共有2的n次方的子集合,之所以是这样,就是因为对于S中的每一个元素,都可以出现或者不出现在某个集合中。

参考代码:

vector<vector<int> >res;void func(vector<int>&vec, vector<int>subres){     if(vec.empty())     {         sort(subres.begin(), subres.end());         res.push_back(subres);         return;     }     vector<int>subvec(vec.begin(), vec.end()-1);     subres.push_back(vec.back());     func(subvec, subres);     subres.pop_back();     func(subvec, subres);}class Solution {public:    vector<vector<int> > subsets(vector<int> &S) {        res.clear();        if(!S.empty())        {            vector<int>subres;            func(S, subres);        }        return res;    }};



0 0
原创粉丝点击