Leetcode110: Subsets

来源:互联网 发布:wow70数据库 编辑:程序博客网 时间:2024/06/02 05:36

Given a set of distinct integers, nums, 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 nums = [1,2,3], a solution is:

[  [3],  [1],  [2],  [1,2,3],  [1,3],  [2,3],  [1,2],  []]

有一种动态规划的方法,还是比较通用的,个人比较推荐,复杂度O(2^n)。

思路就是subset(n) = join(subset(n-1), (subset(n-1), S[n]))

每考虑一个新的元素,就是把这个元素与之前得到的结果都结合一次,并进之前的结果,得出新的结果。

class Solution {public:    vector<vector<int>> subsets(vector<int>& nums) {        sort(nums.begin(), nums.end());        vector<vector<int>> res(1);        for(auto it = nums.begin(); it != nums.end(); ++it)        {            int j = res.size();            while(j--)            {                res.push_back(res[j]);                res.back().push_back(*it);            }        }        return res;    }};


0 0
原创粉丝点击