[LeetCode] 78. Subsets

来源:互联网 发布:雉兔同笼编程 编辑:程序博客网 时间:2024/06/04 17:42

Given a set of distinct integers, nums, return all possible subsets.

Note: 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],  []]
// 6msclass Solution {public:    vector<vector<int>> subsets(vector<int>& nums) {        const auto n = nums.size();        int nsubset = (1 << n);        vector<vector<int>> res(nsubset);        for (int i = 0; i < nsubset; i++) {            for (int j = 0; j < n; j++) {                if (i & (1 << j))                    res[i].push_back(nums[j]);            }        }        return res;    }};

这里写图片描述
这里写图片描述

// 6msclass Solution {public:    vector<vector<int>> subsets(vector<int>& nums) {        const int n = nums.size();        vector<vector<int>> res;        res.push_back({});        for (int i = 1; i < (1 << n); i++) {            vector<int> comb = res[i & (i - 1)];            int LastBit = 0;            while (((i >> LastBit) & 0x1) == 0) LastBit++;            comb.push_back(nums[LastBit]);            res.push_back(comb);        }        return res;    }};
原创粉丝点击