博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣算法题—078集合
阅读量:5846 次
发布时间:2019-06-18

本文共 2237 字,大约阅读时间需要 7 分钟。

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

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

示例:

输入: nums = [1,2,3]输出:[  [3],  [1],  [2],  [1,2,3],  [1,3],  [2,3],  [1,2],  []]
1 #include "_000库函数.h" 2  3  4 //这道题就是求不同的子集问题 5 class solution { 6 public: 7     vector
> subsets(vector
& nums) { 8 if (nums.empty())return { {} }; 9 vector
>res;10 res.push_back({}); 11 for (int i = 1; i <= nums.size(); ++i) {12 vector
v;13 helper(nums, i, 0, v, res);//求不同个数的子集14 }15 return res;16 }17 18 void helper(vector
& nums, int k, int level, vector
&v, vector
>&res) {19 if (v.size() == k) {20 res.push_back(v);21 return;22 }23 for (int i = level; i < nums.size(); ++i) {24 v.push_back(nums[i]);25 helper(nums, k, i + 1, v, res);26 v.pop_back();27 }28 }29 30 };31 32 //使用叠加方法33 //每次在原数组的基础上加入后面的数字34 //比如对于题目中给的例子[1, 2, 3]来说,最开始是空集,35 //那么我们现在要处理1,就在空集上加1,为[1],现在我们有两个自己[]和[1],36 //下面我们来处理2,我们在之前的子集基础上,每个都加个2,可以分别得到[2],[1, 2],37 //那么现在所有的子集合为[], [1], [2], [1, 2],同理处理3的情况可得[3], [1, 3], [2, 3], [1, 2, 3],38 //再加上之前的子集就是所有的子集合了,代码如下:39 class Solution {40 public:41 vector
> subsets(vector
& nums) {42 if (nums.empty())return { {} };43 vector
>res;44 res.push_back({});45 for (int i = 0; i < nums.size(); ++i) {46 int n = res.size();47 for (int j = 0; j < n; ++j) {48 vector
v = res[j];49 v.push_back(nums[i]);//添加新的数据50 res.push_back(v);51 }52 }53 return res;54 }55 };56 57 58 void T078() {59 Solution s;60 vector
n = { 1,2,3 };61 vector
>v;62 v = s.subsets(n);63 for (auto a : v) {64 for (auto b : a)65 cout << b << " ";66 cout << endl;67 }68 }

 

转载于:https://www.cnblogs.com/zzw1024/p/10717650.html

你可能感兴趣的文章
jna dll c
查看>>
CentOS 升级现有PHP版本
查看>>
(一) pyhon 基础语法(数值 字符串 元组 列表 字典)
查看>>
springboot 学习笔记【1】开发第一个spring boot应用
查看>>
HDOJ 1003:求一串数字中和最大的连续子串
查看>>
RedHat 5.6_x86_64 + ASM + RAW+ Oracle 10g RAC (二)
查看>>
win7不能全屏
查看>>
MySQL/InnoDB的并发插入Concurrent Insert
查看>>
产品经理有话说——产品汪成长记(入职)
查看>>
2016/01
查看>>
从魔兽世界到激战2看MMO网游角色成长
查看>>
转两好文防丢:Debian 版本升级/降级 & Linux 应用程序失去输入焦点问题的解决...
查看>>
linux学习入门之Linux系统目录结构
查看>>
码农们:完美主义也是一种错
查看>>
HDU - Pseudoforest
查看>>
Nexus杂
查看>>
Android --- GreenDao的实现(ORM框架)
查看>>
用Java发起HTTP请求与获取状态码(含状态码列表)
查看>>
微信内下载APK 微信浏览器apk下载的解决方案
查看>>
js_coding
查看>>