090 Subsets II [Leetcode]

来源:互联网 发布:php源代码加密 原理 编辑:程序博客网 时间:2024/06/10 15:08

题目内容:

Given a collection of integers that might contain duplicates, 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,2], a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], [] ]

有一篇写得非常好的博文:http://www.cnblogs.com/TenosDoIt/p/3451902.html

实现方法使用了上述博文中的方法,代码如下:

class Solution {public:    vector<vector<int>> subsetsWithDup(vector<int>& nums) {        vector<vector<int>> result(1);        if(nums.size() == 0)            return result;        sort(nums.begin(), nums.end());        int pre(nums[0]), layer_size(1);        for(int i = 0; i < nums.size(); ++i) {            if(nums[i] != pre) {                pre = nums[i];                layer_size = result.size();            }            int size(result.size());            for(int j = size - layer_size; j < size; ++j) {                result.push_back(result[j]);                result.back().push_back(nums[i]);            }        }        return result;    }};
0 0
原创粉丝点击