LeetCode:78.子集

解答

python 复制代码
class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        res=[[]]
        for i in nums:
            res+=[[i]+num for num in res]
        return res

代码解释

这段代码定义了一个名为Solution的类,并在其中定义了一个名为subsets的方法。该方法接受一个整数列表nums作为输入,并返回该列表的所有可能子集。

  1. 初始化结果列表res = [[]]。开始时,结果列表res只包含一个空集,因为空集是任何集合的子集。

  2. 遍历输入列表for i in nums:。对于输入列表nums中的每一个元素i,都会执行一次循环。

  3. 构建新子集res += [[i] + num for num in res]。在每次循环中,都会生成一个新的子集列表,该列表由两部分组成:

    • 当前元素i单独作为一个新子集(但实际上它会被加到一个空集[]前面,所以实际上还是[i])。
    • 将当前元素i添加到res中的每一个现有子集的开头,形成一个新的子集。

    这里使用了列表推导式[i] + num for num in res,它遍历了res中的所有现有子集num,并将i与每个num组合成一个新的子集。

  4. 更新结果列表res += ...。每次循环后,新的子集列表都会与原始res列表合并,更新res以包含所有新的子集。

  5. 返回结果 :当遍历完nums中的所有元素后,res将包含nums的所有可能子集,包括空集和nums自身。最后返回这个列表。

例子

假设我们有以下输入:

python 复制代码
nums = [1, 2]

以下是subsets方法的执行步骤和生成的子集列表:

  1. 初始化结果列表:res = [[]]

    此时res是:[[]]

  2. 遍历第一个元素1

    添加1到每个现有子集中(目前只有一个空集):res = [[]] + [[1] + []]

    此时res是:[[], [1]]

  3. 遍历第二个元素2

    添加2到每个现有子集中:res = [[], [1]] + [[2] + [], [2] + [1]]

    此时res是:[[], [1], [2], [1, 2]]

  4. 返回结果列表。

所以,对于输入nums = [1, 2]subsets方法将返回:

python 复制代码
[
    [], 
    [1], 
    [2], 
    [1, 2]
]

这个列表包含了nums的所有可能子集。

相关推荐
Q264336502328 分钟前
【有源码】基于 Hadoop 生态的化妆品销售数据存储分析与可视化 面向化妆品行业的用户画像构建与销售机会识别研究
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计
2601_962078196 小时前
Python中calendar.weekday用法
python·编程技巧·calendar·日期处理·weekday
2601_962218616 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
2601_966949656 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
2601_962885726 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
吞下星星的少年·-·6 小时前
The 2026 ICPC Asia East Continent Online Contest (II)(构造)
数据结构·算法
李高钢7 小时前
Python FastAPI 框架入门:从零搭建你的第一个高性能 API 服务
数据库·python·fastapi
ocean21037 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
Warson_L8 小时前
Python的OrderedDict
python