78. 子集

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例:

  1. 输入: nums = [1,2,3]
  2. 输出:
  3. [
  4. [3],
  5. [1],
  6. [2],
  7. [1,2,3],
  8. [1,3],
  9. [2,3],
  10. [1,2],
  11. []
  12. ]

代码实现

  1. /*
  2. 开始假设输出子集为空,每一步都向子集添加新的整数,并生成新的子集。
  3. */
  4. class Solution {
  5. public:
  6. vector<vector<int>> subsets(vector<int>& nums) {
  7. vector<vector<int>> res;
  8. vector<int> subSet;
  9. res.push_back({});
  10. // i是遍历原始数组的下标
  11. for(int i=0;i<nums.size();i++){
  12. //遍历现在已经有的所有子集,向所有子集中添加新的整数
  13. int subSetNums = res.size();
  14. for(int j=0;j<subSetNums;j++){
  15. subSet = res[j];
  16. subSet.push_back({nums[i]});
  17. res.push_back(subSet);
  18. }
  19. }
  20. return res;
  21. }
  22. };