78.子集

subset

问题描述:

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],
  []
]

测试代码(c++):

class Solution {
    void compute_c(vector<vector<int>>& result,vector<int> res,vector<int> nums,int start)
    {
        for(int i=start;i<nums.size();i++)
        {
            res.push_back(nums[i]);
            result.push_back(res);
            compute_c(result,res,nums,i+1);
            res.pop_back();
        }
    }    
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        vector<vector<int>> result;
        vector<int> res;
        result.push_back(res);
        compute_c(result,res,nums,0); 
        return result;
    }
};

性能:

这里写图片描述

参考答案(Python):

class Solution(object):
    def subsets(self, nums):
        res = [[]]

        for i in nums:
            res.extend([[i]+x for x in res])

        return res

性能:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/m0_37625947/article/details/77833425