LeetCode Subsets

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],
  []
]
class Solution {
public:
    vector<vector<int> > subsets(vector<int> &S) {
    	sort(S.begin(), S.end());
        vector<vector<int> > ret;
		ret.push_back(vector<int>());

		list<vector<int> > midList;
		for(int i = 0; i < S.size(); ++i)
		{
			midList.push_back(vector<int>());
			midList.back().push_back(S.at(i));
		}
		while(midList.size() > 0)
		{
			vector<int>& temp = midList.front();
			ret.push_back(temp);
			vector<int>::iterator it = find(S.begin(), S.end(), temp.back());
			while(++it != S.end())
			{
				midList.push_back(temp);
				midList.back().push_back(*it);
			}
			midList.pop_front();
		}
		return ret;
    }
};

你可能感兴趣的:(LeetCode Subsets)