当前位置: 首页 > news >正文

【leetcode】78. 子集

子集

    • 题目
    • 题解
      • 1. 迭代
      • 2. 双重循环
      • 3. 递归
      • 4. 回溯

题目

78. 子集

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

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

示例 1:

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

示例 2:

输入:nums = [0]
输出:[[],[0]]

题解

1. 迭代

思路:将子集不断添加到result

class Solution(object):def subsets(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""# 迭代result = [[]]for num in nums:result = result + [[num] + res for res in result]return result

2. 双重循环

思路:与1类似,更好理解

class Solution(object):def subsets(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""# 迭代res = [[]]for i in range(len(nums)):for j in range(len(res)):res.append(res[j]+[nums[i]])return res

3. 递归

class Solution(object):def subsets(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""# 递归ans = []path = []n = len(nums)def dfs(i):if i == n:ans.append(path[:])return dfs(i + 1)path.append(nums[i])dfs(i + 1)path.pop()dfs(0)return ans

4. 回溯

class Solution(object):def subsets(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""# 回溯算法path = []ans = []n = len(nums)def dfs(nums, i):ans.append(path[:])if i == n:return for j in range(i, n):path.append(nums[j])dfs(nums, j + 1)path.pop()dfs(nums, 0)return ans
http://www.xdnf.cn/news/1037449.html

相关文章:

  • 2.2 状态空间表达式的解
  • 初探Qt信号与槽机制
  • 21 - GAM模块
  • 破壁虚实的情感科技革命:元晟定义AI陪伴机器人个性化新纪元
  • SpringBoot 自动化部署实战:从环境搭建到 CI/CD 全流程
  • vulnyx Diff3r3ntS3c writeup
  • CLONE:用于长距离任务的闭环全身人形机器人遥操作
  • C++之模板进阶
  • 多线程下 到底是事务内部开启锁 还是先加锁再开启事务?
  • 《人工智能时代与人类价值》读书简要笔记
  • [CVPR 2025] DeformCL:基于可变形中心线的3D血管提取新范式
  • Docker全平台安装指南:从零到一构建容器化环境(满级版)
  • GDI+ 中与GDI32取图形区域函数对比CreateEllipticRgn/CreatePolygonRgn
  • g++ a.cpp -o a ‘pkg-config --cflags --libs opencv4‘/usr/bin/ld: 找不到 没有那个文件或目录
  • [智能客服project] AI提示词配置 | 主协调器 | 闲鱼协议工具
  • PX4无人机|MID360使用FAST_LIO,实现自主定位及定点——PX4无人机配置流程(五)
  • Vue Methods 实现原理详解
  • 【数据集成与ETL 04】dbt实战指南:现代化数据转换与SQL代码管理最佳实践
  • 一个前端正则校验引发的问题
  • 马上行计划管理后端架构
  • 深度分析Javascript中的Promise
  • 动态多目标进化算法:基于迁移学习的动态多目标遗传算法Tr-NSGA-II求解CEC2015,提供完整MATLAB代码
  • python基础与数据类型
  • C# 枚 举(枚举)
  • Python Day51
  • pyspark非安装使用graphframes
  • PHP+mysql雪里开轻量级报修系统 V1.0Beta
  • Laravel 从版本 5 到 12 每个版本都引入了一些新的特性、改进和弃用的功能
  • rt-thread的定时器驱动(裸机版本)记录.
  • Flutter JSON解析全攻略:使用json_serializable实现高效序列化