LeetCode[中等] 78.子集

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的

子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

思路 迭代法

每次遍历nums中的新的数,将其加到之前所有得到的set中,得到的新列表,加到结果列表中

cs 复制代码
public class Solution {
    public IList<IList<int>> Subsets(int[] nums) {
        IList<IList<int>> powerSet = new List<IList<int>>();
        powerSet.Add(new List<int>());
        foreach(int num in nums)
        {
            int size = powerSet.Count;
            for(int i = 0; i < size; i++)
            {
                IList<int> set = new List<int>(powerSet[i]);
                set.Add(num);
                powerSet.Add(set);
            }
        }
        return powerSet;
    }
}

复杂度分析

  • 时间复杂度:O(n×2n),其中 n 是数组 nums 的长度。子集个数是 2n,对于每个子集需要 O(n) 的时间添加到答案中,因此时间复杂度是 O(n×2n)。
  • 空间复杂度:O(n),其中 n 是数组 nums 的长度。每次新生成子集需要 O(n) 的空间。注意返回值不计入空间复杂度。
相关推荐
鱼鱼不愚与1 天前
《原来如此 | 第01期:为什么导航软件能预测红绿灯倒计时?》
算法
复杂网络1 天前
论最小 Agent 计算机的形态
算法
kisshyshy2 天前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
猿人谷2 天前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络2 天前
Stable Diffusion 视觉大模型微调技术深度调研
算法
复杂网络2 天前
基于 Stable Diffusion 架构的视觉大模型代表性工作与原理深度解析
算法
MrZhao4002 天前
Agent Loop 如何用 Hook 扩展:权限、日志与工具拦截
算法
MrZhao4002 天前
Agent 为什么需要 Skills:别把所有知识都塞进 system prompt
算法
JieE2124 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2124 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试