Subsets -- Leetcode

来源:互联网 发布:mui.js文档 编辑:程序博客网 时间:2024/06/06 12:18

12.26 2014

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) {        vector<int> each;        vector<vector<int> > result;        result.push_back(each);        sort(S.begin(),S.end());        sub(S,0,each,result);        return result;    }    void sub(vector<int> &S, int index, vector<int> &each, vector<vector<int> > &result){        for(int i=index;i<S.size();i++){            each.push_back(S[i]);            result.push_back(each);            if(i<S.size()-1)                sub(S,i+1,each,result);            each.pop_back();        }    }};

总结:

1. 该题目需要使用递归解题的思路,先要对S进行排序。

2. 当是最后一个元素时,只需要把他存入结果即可。当不是最后一个元素时,除了存入each,还需要进行递归。从他的下一位开始进行组合排列。

3. 关键点在于每push了一个元素进each以后要pop出来,这样子才能组合出多种可能子集。


0 0
原创粉丝点击