9.4 Write a method to return all subsets of a set.

LeetCode上的原题,请参见我之前的博客Subsets 子集合和Subsets II 子集合之二。

解法一:

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

解法二:

class Solution {
public:vector<vector<int> > getSubsets(vector<int> &S) {vector<vector<int> > res;vector<int> out;getSubsetsDFS(S, 0, out, res);return res;}void getSubsetsDFS(vector<int> &S, int pos, vector<int> &out, vector<vector<int> > &res) {res.push_back(out);for (int i = pos; i < S.size(); ++i) {out.push_back(S[i]);getSubsetsDFS(S, i + 1, out ,res);out.pop_back();}}
};

解法三:

class Solution {
public:vector<vector<int> > getSubsets(vector<int> &S) {vector<vector<int> > res;int max = 1 << S.size();for (int i = 0; i < max; ++i) {vector<int> out = convertIntToSet(S, i);res.push_back(out);}return res;}vector<int> convertIntToSet(vector<int> &S, int k) {vector<int> sub;int idx = 0;for (int i = k; i > 0; i >>= 1) {if ((i & 1) == 1) {sub.push_back(S[idx]);}++idx;}return sub;}
};

[CareerCup] 9.4 Subsets 子集合相关推荐

  1. Java List部分截取,获得指定长度子集合

    subList方法用于获取列表中指定范围的子列表,该列表支持原列表所支持的所有可选操作.返回列表中指定范围的子列表. 语法 subList(int fromIndex, int toIndex) fr ...

  2. 从集合中选出一些元素组成子集合,使得这些子集合符合某种约束

    今天朋友问了一个问题:现有整型数组 a[6] = {1,2,4,3,5,8},写一个函数,找出所有和为10的集合.穷举法暴力解决很容易,但没有体现算法思想.不妨将问题上升:有某大小为N的整型数组,从中 ...

  3. 90. Subsets II

    Given a collection of integers that might contain duplicates, nums, return all possible subsets (the ...

  4. 程序员应该吃透的集合List

    一:先看看集合框架接口图 (图片来源于网络) 从图中可以看到List实现了Collection接口. 二:Collection接口是什么? 在java类库中,Collection接口是集合类的基本接口 ...

  5. java 集合 接口_Java集合之Collection接口

    1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...

  6. Java基础篇:Java集合

    文章目录 1.概述 2.Collection接口 2.1 Collection接口方法 2.2 Iterator迭代器接口 2.3 Collection子接口之:List接口 2.4 Collecti ...

  7. Java集合知识:TreeMap

    TreeMap是按照Key的排序结果来组织内部结构的Map类集合,它改变了Map类散乱无序的形象.虽然TreeMap没有ConcurrentHashMap和HashMap普及(毕竟插入和删除的效率远没 ...

  8. java treeset原理_Java集合 --- TreeSet底层实现和原理(源码解析)

    概述 文章的内容基于JDK1.7进行分析,之所以选用这个版本,是因为1.8的有些类做了改动,增加了阅读的难度,虽然是1.7,但是对于1.8做了重大改动的内容,文章也会进行说明. TreeSet实现了S ...

  9. 集合框架一:Collection集合

    目录 概述 Colletion接口常用方法 List集合 常用方法 ArrayList实现类 1.底层实现原理 2.常用方法 3.add()方法的扩容问题 4.sort()方法 linkedList实 ...

最新文章

  1. Linux系统基本命令之vim编辑器的使用
  2. 膨胀卷积(Dilated convolution)
  3. 贝叶斯定理( Bayes_Theorem)
  4. mybatis学习(12)com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP
  5. mysql 操作xm_mysql基本命令使用
  6. eclipse Maven配置
  7. NVIDIA历史驱动下载
  8. CefSharp如何获取请求响应头Headers中的数据
  9. 智能耳机测试软件,内置心率监测仪 捷波朗运动耳塞体验!
  10. BC30 KiKi和酸奶
  11. macOS上的符号链接Symlink是什么,以及该怎么使用
  12. IB数学HL/SL考试大纲简单介绍
  13. 互联网经济的背后-梅特卡夫效应与双边市场效应
  14. java毕业生设计在线点餐系统计算机源码+系统+mysql+调试部署+lw
  15. VS2012使用svn
  16. U3D_Shader编程(第二篇:基础夯实篇)
  17. 马尔受伤后,巴西媒体透露斯科拉里在训练中演练了三后腰阵型
  18. Windows下测试tcp/udp端口是否打开
  19. 互联网时代,怎么做到真正的信息安全?
  20. 重庆计算机本科分数线是多少,重庆市2017年高考分数线公布

热门文章

  1. epoll监听文件_epoll使用详解
  2. Java生鲜电商平台-电商支付流程架构实战
  3. python软件开发规范
  4. aspx,ascx和ashx使用小结
  5. Python tutor 简介
  6. 如何优化增强第三方库?
  7. Docker新手入门:基本用法
  8. 几种服务器端IO模型的简单介绍及实现(转载)
  9. 没事写着玩 系列之 JQ连连看(很丑陋,很初级)
  10. 大理三塔,及崇圣寺里的假深沉