Leetcod 78子集

使用二进制进行子集表示,速度非常快~

class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        int allone = (1<<nums.size()) - 1;
        int k = nums.size();
        vector<vector<int>> res;
        res.resize(1<<k);
        for(int i = 0; i<(1 << nums.size()); ++i){
            int s = allone & i;
            int n = nums.size()-1;
            while(s != 0){
                if(s & 1){
                    res[i].push_back(nums[n]);
                }
                n--;
                s >>= 1;
            }
        }
        return res;
        
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容