78[leetcode]求数组子集(Subsets)

(一)题目描述

 

(二)思想方法

遍历数组,一个一个的添加,每一次循环在以前基础上添加本次循环的数,以此类推。比如对于题目中给的例子 [1,2,3] 来说,最开始是空集,那么我们现在要处理1,就在空集上加1,为 [1],现在我们有两个自己 [] 和 [1],下面我们来处理2,我们在之前的子集基础上,每个都加个2,可以分别得到 [2],[1, 2],那么现在所有的子集合为 [], [1], [2], [1, 2],同理处理3的情况可得 [3], [1, 3], [2, 3], [1, 2, 3], 再加上之前的子集就是所有的子集合了。

(三)代码实现

class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
       vector<vector<int> > output(1);
	 for (int i = 0; i < nums.size(); ++i) {
		int size = output.size();
		for (int j = 0; j < size; ++j) {
			output.push_back(output[j]);
			output.back().push_back(nums[i]);
		}
	}
	return output;
    }
};

猜你喜欢

转载自blog.csdn.net/guaiguaitinghua/article/details/90813187