java list 子集_一个List的全部子集
假设有一个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的全部子集相关推荐
- java notify视频_一个很好的小例子来演示java中的wait()和notify()方法
任何人都可以在 java中为我提供一个很好的小例子演示wait()和notify()功能.我尝试使用下面的代码,但它没有显示我的预期. public class WaitDemo { int i = ...
- java多状态机_一个java状态机样例的代码
在UML当中有状态机视图,这个状态机可以用于自动售货机,自动售票机等等场景,下面是用java代码模拟的一个状态机: 1.状态机接口 package stateMachine; /** * 状态机接口 ...
- java鉴权_一个开箱即用的高效认证鉴权框架,专注于restful api的认证鉴权动态保护...
作者:tomsun28 来源:SegmentFault 思否 写在开头 看了看这个专栏的最近一篇文章已经是两年前了,时间过得好快.应该是出学校后时间就很快了.两年前因为用shiro后,自己就按着想法开 ...
- java 分布式任务_一个简单的基于 Redis 的分布式任务调度器 —— Java 语言实现...
折腾了一周的 Java Quartz 集群任务调度,很遗憾没能搞定,网上的相关文章也少得可怜,在多节点(多进程)环境下 Quartz 似乎无法动态增减任务,恼火.无奈之下自己撸了一个简单的任务调度器, ...
- 抽取样本java实验报告_一个自定义classloader的函数抽取壳样本
原标题:一个自定义classloader的函数抽取壳样本 本文为看雪论坛文章 看雪论坛作者ID:lemn 本文为 看雪安卓高研2w班(7月班)优秀学员作品. 下面先让我们来看看学员的学习心得吧! 学员 ...
- java笔试题_一个Java程序员在百度的笔试题整理
以下是程序员去百度的笔试题目整理 欢迎大家讨论,文末有福利. A 卷 Java中 ++ 操作符是线程安全的吗? a=a+b 与 a+=b的区别? 写出Java的单例模式 为什么在重写equals方法的 ...
- java semaphore 等待时间_一个java同步工具类Semaphore的详解
Semaphore是java并发包里面的一个工具类,我们限制可以访问某些资源的线程数目就可以使用Semaphore了.这篇文章将对Semaphore的概念和使用进行一个详解. 一.概念理解 官方是这样 ...
- 一个java源文件允许_一个Java源文件中最多只能有一个class定义
一个Java源文件中最多只能有一个class定义 答:× 确诊甲状腺功能紊乱的常规指标是 答:FT3和FT4 I will not let my children in that way. 答:be ...
- java treelist 排序_一个很好的Java排序列表
我正在寻找Java的良好排序列表.到处搜寻可以给我一些有关使用TreeSet / TreeMap的提示.但是这些组件缺少一件事:随机访问集合中的元素.例如,我想访问排序集中的第n个元素,但是使用Tre ...
最新文章
- 投资83亿!“双一流”高校异地落户,传来新消息!
- [LeetCode]Maximal Rectangle
- ipad运行python爬虫_Python爬虫之UserAgent的使用实例
- ai中导入sketch_在Sketch中营造深度感
- 【WPF学习笔记】[转]周银辉之WPF中的动画 晓风影天之wpf动画——new PropertyPath属性链...
- BugkuCTF-PWN题pwn3-read_note超详细讲解
- Spark源码分析之Master主备切换机制
- Confluence 6 SQL 异常的问题解决
- php strlen 汉子,php使用strlen()判断中文汉字字符串长度
- 永中集成Office与上访科技部有感
- (一)市场调查大赛系列——市场调查研究选题
- 大话设计模式:第27章 解释器模式
- 工程经济—技术方案现金流量表的编制
- 微信公众号注册免费教程
- 揭开CVE漏洞挖掘与编号申请那层神秘窗户纸
- Tushare如何获取股票历史交易数据
- 华为设备ENSP基本命令简介
- 2020 年百度之星·程序设计大赛 - 初赛一题解
- Kubernetes: kubectl 插件管理器 Krew 安装
- linux下创建文件和文件夹