首页 > 其他分享 >NC 集合的所有子集(一)

NC 集合的所有子集(一)

时间:2024-07-31 20:57:34浏览次数:6  
标签:元素 res ArrayList NC add 子集 newres1 集合 new

系列文章目录


文章目录


前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
在这里插入图片描述


描述
现在有一个没有重复元素的整数集合S,求S的所有子集
注意:
你给出的子集中的元素必须按升序排列
给出的解集中不能出现重复的元素
在这里插入图片描述
在这里插入图片描述
思路分析:同样也可以使用递归遍历的方法进行判断,每个元素只有两种状态,选择或者不选择,选择当前第i个元素,计算出其的所有组合结果,或者是不选择该元素,返回其组合的结果值。还是首先把集合内的元素进行排序,添加一个空子集,随后进行判断。

具体java代码为:

import java.util.*;
 
public class Solution {
    public ArrayList subsets(int[] S) {
        Arrays.sort(S);//升序排列
        ArrayList res = new ArrayList();
        ArrayList sub = new ArrayList();
        res.add(sub);//空子集添加
        for(int i = 0 ; i< S.length; i++){ //选择了第i个后,将sub增加一个S[i] ArrayList newres = new ArrayList();//重新创建一个保存对象
            for(ArrayListlast : res){
                ArrayList newres1 =  new ArrayList();
                newres1.addAll(last);//将last中的所有元素添加到newres1中
                newres1.add(S[i]);//改变newres1的值,然后保存
                newres.add(newres1);
            }
            res.addAll(newres);//将最终值添加到res中
        }
        return res;
    }
}

设定了两层for循环,故时间复杂度为O(N^2),空间复杂度为O(N)。

标签:元素,res,ArrayList,NC,add,子集,newres1,集合,new
From: https://blog.csdn.net/pleaseprintf/article/details/140782778

相关文章

  • NC 括号生成
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。描述给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。......
  • ubuntu安装x11vnc,xauth: unable to generate an authority file name
    ubuntu安装x11vnc,xauth:unabletogenerateanauthorityfilename在Ubuntu上安装和配置x11vnc时,如果遇到“xauth:unabletogenerateanauthorityfilename”的错误,通常是由于权限问题或缺少必要的环境变量引起的。以下是一些解决此问题的步骤:安装x11vnc首......
  • STAT3006/7305 STAT3006/7305  covariance matrix
    STAT3006/7305Tutorial 11. Assumeis bivariate normal with meanand covariance matrixDeriveanexpressionforthemarginaldistributionofX1 .2. Forthe aboveproblem, derive anexpressionfor the conditional distribution of X1 fromthe......
  • 代码随想录训练第三十天|01背包理论基础、01背包、LeetCode416.分割等和子集
    文章目录01背包理论基础01背包二维dp数组01背包一维dp数组(滚动数组)416.分割等和子集思路01背包理论基础背包问题的理论基础重中之重是01背包,一定要理解透!leetcode上没有纯01背包的问题,都是01背包应用方面的题目,也就是需要转化为01背包问题。所以我先通过纯01背......
  • Invertible Bracket Sequences
    看到这种类似的括号匹配的题目,一定要想到卡特兰数的证明过程呀(将(看成\(1\),)看成\(-1\),于是不难得出充分条件,虽然这道题目并不是直接这么给的,但是我看没人证明)剩下的看官方题解就好了,之所以可以删掉官方题解所说的\(x\),是因为接下来如果\(x\)是\(r_1\)的答案候选项的话,由于\(r_1>......
  • 57_Redis与Springboot的集合应用
    前提要实现,使用Redis存储登录状态需要一个完整的前端后端的项目前端项目搭建解压脚手架安装依赖配置请求代理选做:禁用EsLint语法检查VueAdminTemplate关闭eslint校验,lintOnSave:false设置无效解决办法_lintonsave:false-CSDN博客后端项目搭建创建springboot项......
  • funccache:革命性的Python函数缓存工具,轻松提升代码效率!
    funccacheEnglish|中文如其名,funccache实现函数缓存功能,由GQYLPY团队研发的一个框架,可缓存某个函数或某个类中定义的所有方法的返回值。你的程序中有一个函数会被多次调用,并且返回值不变,你会怎么做?为提高代码效率,你会先调用一次该函数并把返回值存到一个变量,之后就使用......
  • Python - Functional programming
    Functionalprogrammingisaprogrammingparadigminwhichmostoftheworkinaprogramisdoneusingpurefunctions.Apurefunctionisafunctionwithoutanysideeffects;itsreturnvalueisalwaysdeterminedbyitsinputarguments,soitalwaysreturn......
  • 集合知识点(持续更新)
    集合Java集合类可以用于存储数量不等的多个对象,还可以用于保存具有映射关系的关联数组。Java集合可以分为Collection和Map两种体系:Collection接口:单列数据,定义了存取一组对象的方法的集合List:元素有序,可重复的集合。set:元素无序,不可重复的集合。Map接口:双列数组......
  • Python - Creating jump tables using lambda functions
    Wecanplacelambdafunctioninsidelistanddictionaryliterals.Thiswaywecanuselambdaexpressionstocreatejumptables.>>>L=[lambdas:s.strip().lower(),... lambdas:s.strip().upper(),... lambdas:s.lstrip().title(),... lambd......