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. 子集的主要内容,如果未能解决你的问题,请参考以下文章