【算法三十二】

78. 子集

回溯:

java 复制代码
class Solution {
    private List<List<Integer>> ans = new ArrayList<>();
    private List<Integer> path = new ArrayList<>();
    public List<List<Integer>> subsets(int[] nums) {
        // 从索引 0 开始搜索
        backtrack(nums,0);
        return ans;
    }

    private void backtrack(int[] nums,int stratIndex){
        //刚进去就加,避免漏
        ans.add(new ArrayList<>(path));
        
        //终止条件
        if(stratIndex > nums.length-1){
            return;
        }

        for(int i = stratIndex;i<nums.length;i++){
            //在起始index上累加子集,1,12,123
            path.add(nums[i]);
            //回溯,起到1,12,123的效果
            backtrack(nums,i+1);
            //回溯删除
            path.remove(path.size()-1);
        }
    }
}

时间复杂度:O(N*2^n)

空间复杂度:O(N)

相关推荐
yangdaxiageo7 分钟前
算法时代的“心智置顶“:《功夫女足》如何构建GEO正向飞轮
人工智能·科技·算法·aigc
ysa05103023 分钟前
【板子】欧拉序
c++·笔记·算法·深度优先·图论
大耳朵糊涂27 分钟前
链表的基础操作(二)
算法
拂拉氏32 分钟前
【知识讲解】 红黑树的删除讲解
数据结构·算法·红黑树
初学者,亦行者33 分钟前
算法设计与分析:动态规划 - TSP问题和0-1背包问题
c++·算法·动态规划
ward RINL1 小时前
# GPT-5.6-sol vs GPT-5.5 新题实测:非弹性碰撞物理题和稳定路由算法
网络·gpt·算法
灯澜忆梦1 小时前
【dp_1】爬楼梯 | 斐波那契数 | 第 N 个泰波那契数 | 三步问题
算法·golang
星释1 小时前
鸿蒙智能体开发实战:35.鸿蒙壁纸大师 - 调用火山引擎模型生成壁纸
算法·华为·ai·harmonyos·鸿蒙·火山引擎
geovindu1 小时前
go: Floyd-Warshall Algorithms
开发语言·后端·算法·golang