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) 的空间。注意返回值不计入空间复杂度。
相关推荐
爱吃土豆的程序员20 分钟前
Lucene 倒排索引原理详解:深入探讨相关算法设计
java·算法·elasticsearch·全文检索·lucene
HC1825808583244 分钟前
生活英语口语柯桥学英语“再确认一下“ 说成 “double confirm“?这是错误的!
学习·职场和发展
4v1d1 小时前
从决策树到GBDT、随机森林
算法·决策树·随机森林
顾城猿2 小时前
9.25-编程刷题
数据结构·算法·leetcode
王哈哈嘻嘻噜噜2 小时前
c语言中的杨氏矩阵的介绍以及元素查找的方法
c语言·算法·矩阵
大柏怎么被偷了2 小时前
【C++算法】栈
开发语言·c++·算法
小柯J桑_2 小时前
史上最牛排序集合,带你认清所有排序算法!(必看系列)~
数据结构·算法·排序算法
无限大.3 小时前
c语言200例 64
c语言·数据结构·算法
sp_fyf_20243 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-26
人工智能·深度学习·神经网络·算法·语言模型·自然语言处理·数据挖掘