力扣78子集题解

java 复制代码
class Solution {
    List<Integer> t = new ArrayList<Integer>();
    List<List<Integer>> ans = new ArrayList<List<Integer>>();

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

    public void dfs(int cur, int[] nums) {
        if (cur == nums.length) {
            ans.add(new ArrayList<Integer>(t));
            return;
        }
        t.add(nums[cur]);
        dfs(cur + 1, nums);
        t.remove(t.size() - 1);
        dfs(cur + 1, nums);
    }
}

使用回溯求解

cur代表的意思是处理numscur这个数字

t.add和t.remove代表 当前的数字被选择和不被选择

以nums\[\] = {1,2,3}为例

求解过程就是

java 复制代码
选1选2选3
选1选2不选3
选1不选2选3
选1不选2不选3

不选1选2选3
不选1选2不选3
不选1不选2选3
不选1不选2不选3
相关推荐
如何原谅奋力过但无声21 分钟前
【灵神高频面试题合集09-13】二叉树、二叉搜索树
数据结构·算法·leetcode
皆圥忈26 分钟前
磁盘物理结构与文件系统基础讲解
linux·算法
数据仓库搬砖人31 分钟前
用 LangGraph 从零搭一个客服 Agent:多轮对话 + 工具调用全流程
算法
GuWenyue32 分钟前
告别JS类型坑!Ts为什么在ai时代逐渐成为"第一"语言
前端·算法·typescript
子琦啊32 分钟前
哈希与前缀和
算法·哈希算法
Deep-w42 分钟前
【MATLAB】基于离散 LQR 的车辆横向轨迹跟踪控制方法研究
开发语言·算法·matlab
Peter·Pan爱编程1 小时前
23. 算法库:用算法代替手写循环
c++·人工智能·算法
小欣加油1 小时前
leetcode2161 根据给定数字划分数组
数据结构·c++·算法·leetcode·职场和发展
Momo__zz2 小时前
零代码平台设计
算法·深度优先
cpp_25012 小时前
P2947 [USACO09MAR] Look Up S
数据结构·c++·算法·题解·单调栈·洛谷