leetcode 子集 medium

class Solution {
public:
    vector<int> t;
    vector<vector<int>> ans;

    vector<vector<int>> subsets(vector<int>& nums) {
        int n = nums.size();
        for (int mask = 0; mask < (1 << n); ++mask) {
            t.clear();
            for (int i = 0; i < n; ++i) {
                if (mask & (1 << i)) //如果mask的第i位有1
                {
                    t.push_back(nums[i]);
                }
            }
            ans.push_back(t);
        }
        return ans;
    }
};

这里面有个 1<<n这样的说法,就是第n位是1的一个二进制数,实际上就是想表达,mask<2的n次方 这样一个意思。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页