欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

子集

程序员文章站 2022-07-14 08:02:36
...

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

示例:

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

这道题看似很难,但是好像就是难,但是做出来了,蜜汁做出????

import java.util.LinkedList;
import java.util.List;

class Solution {

    List<List<Integer>> res = new LinkedList<>();

    public void dfs(int []num, int i, int sum, LinkedList ls, int max) {

        // 递归出口条件
        if (sum == i) {
            res.add(new LinkedList<>(ls));
        }

        // 加入元素
        for (int j = max; j < num.length; j++) {
            sum += 1;
            ls.addLast(num[j]);
            dfs(num, i, sum, ls, j+1);
            sum -= 1;
            ls.removeLast();
        }
    }

    public List<List<Integer>> subsets(int[] nums) {

        for(int i=1; i<=nums.length; i++){
            List<Integer> ls = new LinkedList<>();
            // 代表每次取几个作为字集个数
            dfs(nums, i, 0, (LinkedList) ls, 0);
        }
        res.add(new LinkedList<>());
        return res;
    }

    public static void main(String[] args) {
        Solution s = new Solution();
        s.subsets(new int[]{1,2,3});
    }
}

子集

相关标签: leetecode

上一篇: 1291. 顺次数

下一篇: 二分搜索