首页 > 代码库 > 【LeetCode】Subsets (2 solutions)

【LeetCode】Subsets (2 solutions)

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],  []]

 

参照Subsets II的解法

 

解法一:

class Solution {public:    vector<vector<int> > subsets(vector<int> &S) {        vector<vector<int> > result;        int size = S.size();        for(int i = 0; i < pow(2.0, size); i ++)        {//2^size subsets            vector<int> cur;            int tag = i;            for(int j = size-1; j >= 0; j --)            {//for each subset, the binary presentation has size digits                if(tag%2 == 1)                    cur.push_back(S[j]);                tag >>= 1;                if(!tag)                    break;            }            sort(cur.begin(), cur.end());            result.push_back(cur);        }        return result;    }};

 

解法二:

class Solution {public:    vector<vector<int> > subsets(vector<int> &S) {        vector<vector<int> > result;        vector<int> cur;        result.push_back(cur);  //empty set        sort(S.begin(), S.end());        for(int i = 0; i < S.size(); i ++)        {            int exist = result.size();            for(int j = 0; j < exist; j ++)            {                cur = result[j];                cur.push_back(S[i]);                result.push_back(cur);            }        }        return result;    }};

【LeetCode】Subsets (2 solutions)