您的位置:首页 > 其它

[leetcode] 78. Subsets

2017-08-12 00:14 447 查看
题目链接:
https://leetcode.com/problems/subsets/
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],
[]
]

Solution:
从题目来看,传入一个数组,要求输出返回该数组元素的所有子集的集合。

在这里,从数学的角度分析,可以从一个元素出发,其将返回 [ ], [1]。

当元素增加到2时,其将返回 [ ], [1],[2],[1,2]。 其原有子集不变,额外增加的是原有子集上的分别加入新元素2。

同理三个元素的时候也满足以上规律。

那么相关代码如下所示。

class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res(1);
sort(nums.begin(), nums.end());

int i, j;
for (int i = 0; i < nums.size(); i++)
{
int size = res.size();
for (int j = 0; j < size; j++)
{
vector<int> tmp = res[j];
tmp.push_back(nums[i]);
res.push_back(tmp);
}
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 回溯