首页 > 其他分享 >LeetCode78 子集

LeetCode78 子集

时间:2024-10-04 14:00:44浏览次数:9  
标签:cur nums LeetCode78 list 子集 数组 移除

题目:

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的
子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1:
输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:
输入:nums = [0]
输出:[[],[0]]

思路:

  • 回溯法
  • 选择数组元素,如果数组元素全都选择完了,就添加到结果集里面
  • 回溯移除最后添加的数组元素,移除后再次进行递归添加新的子集

代码:

class LeetCode78 {
    //存放结果集
    List<List<Integer>> resultList = new ArrayList<>();
    //存放已经被选中的数据
    List<Integer> list = new ArrayList<>();    


    public List<List<Integer>> subsets(int[] nums) {
        //回溯法 
        dfs (0, nums);

        return resultList;

    }

    public void dfs (int cur, int[] nums) {
        //如果全都选择完了,就添加到结果集里面
        if (cur == nums.length) {
            resultList.add(new ArrayList<Integer>(list));
            return;
        }
        //选择数组元素
        list.add( nums[cur]);
        //递归
        dfs(cur+1, nums);
        //回溯,移除刚添加的(也就是最后一个)元素,以便后面再重新选择
        list.remove( list.size()-1);
        // 移除后一个元素后,再次进行递归添加新的子集到list中
        dfs(cur+1, nums);


    }


}

标签:cur,nums,LeetCode78,list,子集,数组,移除
From: https://www.cnblogs.com/expiator/p/18446555

相关文章

  • leetcode刷题day34|动态规划Part03 背包问题(01背包问题 二维、01背包问题 一维、416.
    0-1背包问题二维动规五部曲1、确定dp数组以及下标的含义dp[i][j]表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。(取物品时可以是取0-i的任意一个,或者是他们的组合)2、确定递推公式不放物品i:背包容量为j,里面不放物品i的最大价值是dp[i-1][j]......
  • 【题解】【子集枚举】—— PERKET
    【题解】【子集枚举】——PERKET[COCI2008-2009#2]PERKET题目描述输入格式输出格式输入输出样例输入#1输出#1输入#2输出#2输入#3输出#3提示数据规模与约定说明1.思路解析2.AC代码[COCI2008-2009#2]PERKET通往洛谷的传送门题目描述Perket是一种流行......
  • 子集反演 & sos dp 学习笔记
    子集反演&sosdp学习笔记子集反演设\(g(S)\)表示集合\(S\)的答案,\(f(S)\)为\(S\)的子集的答案和。根据定义:\[f(S)=\sum_{T\inS}g(T)\]子集反演就是:\[g(S)=\sum_{T\inS}(-1)^{|S|-|T|}f(T)\]本质上就是容斥原理,可感性理解,证明略(给你你也记不住)。于是便可以通......
  • Day 21 回溯法part03| LeetCode 93. 复原 IP 地址,78.子集,90.子集II
    93.复原IP地址93.复原IP地址classSolution{List<String>res=newArrayList<>();publicList<String>restoreIpAddresses(Strings){backtracking(s,0,0);returnres;}voidbacktrack......
  • JAVA学习-练习试用Java实现“子集”
    问题:给定一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。示例1:输入:nums=[1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例2:输入:nums=[0]输出:[[],[0]]提示:1<=num......
  • leetcode刷题day24|回溯算法Part03(93.复原IP地址、78.子集、90.子集II)
    93.复原IP地址思路:这个题和131.分割回文串一样都是对字符串进行分割,只不过这个子字符串判断时是看是不是0-225之间的数字。回溯三部曲:1、递归函数参数:全局变量:String数组result存放结果集。递归函数参数:原字符串;startIndex,因为切割过的地方不能重复切割,和组合问题是一样......
  • 代码随想录算法训练营,9月20日 | 93.复原IP地址,78.子集,90.子集II
    93.复原IP地址题目链接:93.复原IP地址文档讲解︰代码随想录(programmercarl.com)视频讲解︰复原IP地址日期:2024-09-20Java代码如下:classSolution{List<String>res=newArrayList<>();privatevoidbackTracking(Strings,intstartIndex,intpointNum){......
  • VUE 分组取最大,生成子集合
    //分组函数 constgroupByAge=(docs:TOSDepositoryDTO[]):Record<number,TOSDepositoryDTO[]>=>{ returndocs.reduce((acc,d)=>{  if(!acc[d.approvalId])acc[d.approvalId]=[];  acc[d.approvalId].push(d);  returnacc; },{}asR......
  • 早上好祝福语暖心句子集锦,今天精美的祝福图片大全
    一朝相识一生缘,永生牵挂在心间,岁月匆匆又一天,清晨祝福在身边,千言万语汇一句,安康幸福每一天。早上好!岁月告诉我们,有一颗宽容的心,会健康一辈子。有一颗善良的心 ,会平安一辈子。有一颗童心,会年轻一辈子。 上午吉祥!人生一世,有春风得意,有苦甜相依,有喜乐相伴,有烦忧挠人,只要静下......
  • 【Leetcode:LCR 101. 分割等和子集 + 递归 + 记忆化搜索 + dp】
    ......