leetcode 78. 子集

Posted 巴蜀小小生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 78. 子集相关的知识,希望对你有一定的参考价值。

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

说明:解集不能包含重复的子集。

示例:

输入: nums = [1,2,3]
输出:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

 1 class Solution {
 2 public:
 3     vector<vector<int>> subsets(vector<int>& nums) {
 4         vector<vector<int>> ans(1);
 5         for(int i = 0; i < nums.size(); i++){
 6             int len = ans.size();//一定要在循环外面确定ans的大小,在循环中ans的大小是变化的
 7             for(int j=0; j < len; j++){
 8                 ans.push_back(ans[j]);//复制之前ans中的所有元素
 9                 ans.back().push_back(nums[i]); //在复制的项后面添加nums[i]
10             }
11         }
12         return ans;
13     }
14 };

每一个元素有两种状态,在子集中,和不在子集中

上面的算法就是遵循这样的思维,首先申明一个大小为1的ans,然后复制这个空的vector,把nums[i]添加到这个vector中,这样就实现了nums[i]的两种状态,此时ans=[[],[1]];重复这样的过程就能求到nums的所有子集

 



以上是关于leetcode 78. 子集的主要内容,如果未能解决你的问题,请参考以下文章

精选力扣500题 第61题 LeetCode 78. 子集c++/java详细题解

leetcode78 子集(Medium)

LeetCode:78. 子集90. 子集 II

[LeetCode] 78. 子集

Leetcode 78.子集

leetcode 78. 子集