力扣热题100道之78子集

解法

题解中的迭代的解法

利用索引的二进制来标记当次应该哪几位。

所有的子集一共有2的n次方种。刚好对应所有的索引的二进制,其中索引的二进制中的第i位为1表示第i位在此子集中。比如例子nums=[1,2,3],其中n=3,7可以表示为111,意思是123这三个数都在这个子集中。再比如3的二进制是011,那么这个子集中的数据有2,3。

这样就将2的n次方种子集情况,全部都表示出来了。

复制代码
class Solution {
    public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>>r=new ArrayList();
        List<Integer>o=new ArrayList();
        int n=nums.length;
        for(int m=0;m<(1<<n);m++){
            o.clear();
            for(int i=0;i<n;i++){   
                if((m&(1<<i))!=0){
                    o.add(nums[i]);
                }
            }
            r.add(new ArrayList(o));
        }
        return r;
    }
}
相关推荐
lally.1 小时前
Kaggle Binary Classification with a Bank Dataset逻辑回归实现(准确率0.94539)
人工智能·算法·机器学习·逻辑回归
埃伊蟹黄面1 小时前
二分查找算法
c++·算法·leetcode
悦来客栈的老板1 小时前
AST反混淆实战|reese84_jsvmp反编译前的优化处理
java·前端·javascript·数据库·算法
dragoooon341 小时前
[优选算法专题十一.字符串 ——NO.60~63 最长公共前缀、5最长回文子串、 二进制求和 、字符串相乘]
算法·leetcode·动态规划
lengxuenong1 小时前
第四届挑战赛二轮题解
c++·算法
小毅&Nora1 小时前
【后端】【C++】函数对象与泛型算法:从“找最便宜的菜”说起
c++·算法·泛型
CoderYanger1 小时前
C.滑动窗口——2762. 不间断子数组
java·开发语言·数据结构·算法·leetcode·1024程序员节
2401_837088502 小时前
Integer.MIN_VALUE 是什么意思?
java·开发语言·算法
好风凭借力,送我上青云2 小时前
哈夫曼树和哈夫曼编码
c语言·开发语言·数据结构·c++·算法·霍夫曼树