力扣热题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;
    }
}
相关推荐
还不秃顶的计科生11 分钟前
LeetCode 热题 100第一题:两数之和python版本
python·算法·leetcode
Swift社区14 分钟前
LeetCode 462 - 最小操作次数使数组元素相等 II
算法·leetcode·职场和发展
nike0good24 分钟前
Goodbye 2025 题解
开发语言·c++·算法
崇山峻岭之间26 分钟前
Matlab学习记录19
学习·算法·matlab
jllllyuz29 分钟前
基于帧差法与ViBe算法的MATLAB前景提取
开发语言·算法·matlab
程序员良辰37 分钟前
【面试读心术】一场Redis项目面试的AB面
redis·面试·职场和发展
wen__xvn1 小时前
代码随想录算法训练营DAY1第一章 数组part01
数据结构·算法·leetcode
爱编码的傅同学1 小时前
【程序地址空间】页表的映射方式
c语言·数据结构·c++·算法
UID96221 小时前
[特殊字符] 无级变速传动(CVT)技术突破之道 | 易经×数学×工程的跨维度破解方案
算法·数学建模·开源
生信碱移1 小时前
神经网络单细胞预后分析:这个方法直接把 TCGA 预后模型那一套迁移到单细胞与空转数据上了!竟然还能做模拟敲除与预后靶点筛选?!
人工智能·深度学习·神经网络·算法·机器学习·数据挖掘·数据分析