LeetCode:78子集

java 复制代码
class Solution {
    //盛放最终所有子集
    List<List<Integer>> res = new ArrayList<>();
    //盛放单个集合
    List<Integer> path = new ArrayList<>();

    public List<List<Integer>> subsets(int[] nums) {
        backtrack(nums,0);
        return res;
    }

    private void backtrack(int[] nums, int startIndex){
        res.add(new ArrayList<>(path));

        //从startIndex开始
        for(int i = startIndex; i < nums.length; i++){
            path.add(nums[i]);
            //递归
            backtrack(nums, i + 1);

            path.remove(path.size() - 1);
        }
    }
}

子集回溯递归树:

这个递归函数中没有return,靠for循环里面的下标跳出循环。

可与上题全排列对比理解回溯算法。

相关推荐
2401_841495643 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
醇氧5 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
爱刷碗的苏泓舒7 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
谙弆悕博士8 小时前
系统集成项目管理工程师教程(第3版)笔记——第17章:法律法规和标准规范
笔记·职场和发展·学习方法·业界资讯·软考·法律·法规
烬羽9 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米10 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记10 小时前
堆(数据结构)
数据结构·
星空露珠10 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA12 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel12 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构