【算法三十二】

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)

相关推荐
好悬给我拽开线7 小时前
ZILOT 论文解析
算法
饮水桶_T8 小时前
JAVA IO流笔记
开发语言·数据结构·算法
星夜离尘569 小时前
MATLAB 离散数据分箱:半开区间、末端点与计数、加权和、平均
算法·matlab
Pniubi9 小时前
力扣76.最小覆盖子串
算法·leetcode·职场和发展
地平线开发者10 小时前
征程6|用 hrt\_model\_exec 看清 YOLOv5x 的输入、原始输出和后处理
人工智能·算法
csdn_aspnet11 小时前
C++ 3个有序点的方向(Orientation of 3 ordered points)
c++·算法
赤生云电竞11 小时前
GPU算力共享平台架构实践:任务分发与资源隔离的关键配置
算法·架构·gpu算力
青少儿编程课堂13 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:折半搜索优化子集枚举(Meet in the Middle)解析
c++·python·算法·bfs·信息学竞赛
Oneshot15 小时前
DLX(Dancing Links)算法详解:求解数独最快的算法
算法
青少儿编程课堂15 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园连连看解析
c++·python·算法·bfs·信息学竞赛