您的位置:首页 > 其它

【LeetCode】78_Subsets

2015-08-19 17:24 399 查看

题目


Subse

Given a set of distinct integers, nums, return all possible subsets.
Note:

Elements in a subset must be in non-descending order.
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],
[]
]


解析

我的思路是这样的,例如进行到1,2元素,此时vector<vector<int>>中包含的集合有

[

[1]

[2]

[1,2]

[]

]

这个时候将集合中的子集全部添加元素3,得到

[

[1,3]

[2,3]

[1,2,3]

[3]

]

将新得到的这些自己并入之前的集合中,得到

[

[1]

[2]

[1,2]

[]

[1,3]

[2,3]

[1,2,3]

[3]

]

这就是1,2,3元素的全部子集。
同样的对元素4一样的操作。迭代的思路也非常清晰。

代码如下

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

for (int i = 0; i<nums.size(); i++)
{
int size = ret.size();
for (int j=0 ;j<size;j++)
{
vector<int> in(ret[j]);
in.push_back(nums[i]);
ret.push_back(in);
}
}
return ret;
}

};
个人觉得这是最满意的一次刷题了。思路清晰,代码简洁。

大神的代码看了一下,看不下去。就这样呗。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: