假设有一个list [1,2,3],要求出list的全部子集!

假设一个list的长度为n,那么它就包含

个子集(包含空集)。一样的,1个长度为 n 的二进制字符串,能够表示

个数。java

因此咱们不难联想到,要求list的子集,其实就是位运算:code

[ ]     ——> 0 0 0   ——> 0字符串

[1]     ——> 1 0 0   ——> 4class

[2]     ——> 0 1 0   ——> 2List

[3]     ——> 0 0 1   ——> 1遍历

[1,2]   ——> 1 1 0   ——> 6二进制

[1,3]   ——> 1 0 1   ——> 5im

[2,3]   ——> 0 1 1   ——> 3img

[1,2,3] ——> 1 1 1   ——> 7集合

因此要获得长度为 n 的list的子集,只须要遍历从 0—

-1 ,而后转化成二进制,把对应位置为 1 的数字放入集合。

十进制转二进制:

由于我使用的是Java,在Java中有现成的语句可以调用:

int a = 8

b = Integer.toBinaryString(a);

输出:b = "1000"

固然也能够按照二进制的定义本身写:

public int toBinary(int num) {

int r = 0;

int k = 1;

int sum = 0;

while(num != 0) {

r = num % 2;

sum += r*k;

k *= 10;

num /= 2;

}

return sum;

}

完整代码(Java):

public List> subsets(int[] nums) {

List> sets = new ArrayList>();

for(int i=0;i<=Math.pow(2, nums.length)-1;i++) {

List list = new ArrayList();

String a = Integer.toBinaryString(i); //转化为二进制

for(int j=0;j

char c = a.charAt(j); //取到String中的每一个字符

if(c == '1') list.add(nums[nums.length-a.length()+j]); //把对应位置为1的数字放入集合

}

sets.add(list);

}

return sets;

}

java list 子集_一个List的全部子集相关推荐

  1. java notify视频_一个很好的小例子来演示java中的wait()和notify()方法

    任何人都可以在 java中为我提供一个很好的小例子演示wait()和notify()功能.我尝试使用下面的代码,但它没有显示我的预期. public class WaitDemo { int i = ...

  2. java多状态机_一个java状态机样例的代码

    在UML当中有状态机视图,这个状态机可以用于自动售货机,自动售票机等等场景,下面是用java代码模拟的一个状态机: 1.状态机接口 package stateMachine; /** * 状态机接口 ...

  3. java鉴权_一个开箱即用的高效认证鉴权框架,专注于restful api的认证鉴权动态保护...

    作者:tomsun28 来源:SegmentFault 思否 写在开头 看了看这个专栏的最近一篇文章已经是两年前了,时间过得好快.应该是出学校后时间就很快了.两年前因为用shiro后,自己就按着想法开 ...

  4. java 分布式任务_一个简单的基于 Redis 的分布式任务调度器 —— Java 语言实现...

    折腾了一周的 Java Quartz 集群任务调度,很遗憾没能搞定,网上的相关文章也少得可怜,在多节点(多进程)环境下 Quartz 似乎无法动态增减任务,恼火.无奈之下自己撸了一个简单的任务调度器, ...

  5. 抽取样本java实验报告_一个自定义classloader的函数抽取壳样本

    原标题:一个自定义classloader的函数抽取壳样本 本文为看雪论坛文章 看雪论坛作者ID:lemn 本文为 看雪安卓高研2w班(7月班)优秀学员作品. 下面先让我们来看看学员的学习心得吧! 学员 ...

  6. java笔试题_一个Java程序员在百度的笔试题整理

    以下是程序员去百度的笔试题目整理 欢迎大家讨论,文末有福利. A 卷 Java中 ++ 操作符是线程安全的吗? a=a+b 与 a+=b的区别? 写出Java的单例模式 为什么在重写equals方法的 ...

  7. java semaphore 等待时间_一个java同步工具类Semaphore的详解

    Semaphore是java并发包里面的一个工具类,我们限制可以访问某些资源的线程数目就可以使用Semaphore了.这篇文章将对Semaphore的概念和使用进行一个详解. 一.概念理解 官方是这样 ...

  8. 一个java源文件允许_一个Java源文件中最多只能有一个class定义

    一个Java源文件中最多只能有一个class定义 答:× 确诊甲状腺功能紊乱的常规指标是 答:FT3和FT4 I will not let my children in that way. 答:be ...

  9. java treelist 排序_一个很好的Java排序列表

    我正在寻找Java的良好排序列表.到处搜寻可以给我一些有关使用TreeSet / TreeMap的提示.但是这些组件缺少一件事:随机访问集合中的元素.例如,我想访问排序集中的第n个元素,但是使用Tre ...

最新文章

  1. 投资83亿!“双一流”高校异地落户,传来新消息!
  2. [LeetCode]Maximal Rectangle
  3. ipad运行python爬虫_Python爬虫之UserAgent的使用实例
  4. ai中导入sketch_在Sketch中营造深度感
  5. 【WPF学习笔记】[转]周银辉之WPF中的动画 晓风影天之wpf动画——new PropertyPath属性链...
  6. BugkuCTF-PWN题pwn3-read_note超详细讲解
  7. Spark源码分析之Master主备切换机制
  8. Confluence 6 SQL 异常的问题解决
  9. php strlen 汉子,php使用strlen()判断中文汉字字符串长度
  10. 永中集成Office与上访科技部有感
  11. (一)市场调查大赛系列——市场调查研究选题
  12. 大话设计模式:第27章 解释器模式
  13. 工程经济—技术方案现金流量表的编制
  14. 微信公众号注册免费教程
  15. 揭开CVE漏洞挖掘与编号申请那层神秘窗户纸
  16. Tushare如何获取股票历史交易数据
  17. 华为设备ENSP基本命令简介
  18. 2020 年百度之星·程序设计大赛 - 初赛一题解
  19. Kubernetes: kubectl 插件管理器 Krew 安装
  20. linux下创建文件和文件夹

热门文章

  1. 模电课程设计——三级电路1
  2. 关于赛车游戏的一点体会
  3. 常州网站服务器_常州云主机
  4. java 用遗传算法解决图像二值化问题 找阈值
  5. 安卓手机通讯录恢复教程
  6. python模拟火车票订票系统_pythonCCF 201609-2火车票购买,PythonCCF2016092,购票
  7. 动态树(LCT)初探
  8. 运算符:is与==的区别
  9. 面向服务框架WebServiceBPM系统
  10. 高铁招计算机专业吗,开高铁是什么专业_哪些学校有高铁专业?