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

0078.子集

题目链接

78. 子集 - 力扣(LeetCode)

题目描述

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

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

题目示例

示例 1 :

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

示例 2 :

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

解题思路

题目要求生成给定数组的所有可能子集(包括空集)。通过回溯算法,在每一步选择是否包含当前元素,递归生成所有可能的组合。

题解代码

classSolution{privatefinalList<List<Integer>>ans=newArrayList<>();// 存储所有子集的结果列表privatefinalList<Integer>path=newArrayList<>();// 当前递归路径(当前子集)privateint[]nums;// 输入数组publicList<List<Integer>>subsets(int[]nums){this.nums=nums;// 初始化输入数组dfs(0);// 从第0个元素开始递归returnans;}// 回溯函数:处理第i个元素的选择与不选privatevoiddfs(inti){if(i==nums.length){// 所有元素处理完毕ans.add(newArrayList<>(path));// 将当前路径拷贝到结果列表return;}// 不选当前元素nums[i]dfs(i+1);// 直接递归处理下一个元素// 选当前元素nums[i]path.add(nums[i]);// 将当前元素加入路径dfs(i+1);// 递归处理下一个元素path.remove(path.size()-1);// 回溯:移除最后添加的元素(恢复现场)}}

复杂度分析

  • 时间复杂度O(n × 2ⁿ)
    • 每个元素有选/不选两种可能,总共有2ⁿ个子集。
    • 每个子集被复制到结果列表需要O(n)时间,总时间复杂度为O(n × 2ⁿ)。
  • 空间复杂度O(n × 2ⁿ)
    • 结果列表存储2ⁿ个子集,每个子集平均长度为n/2。
    • 递归调用栈深度为O(n)。
http://www.cnnetsun.cn/news/2001520.html

相关文章:

  • ExifToolGUI完整指南:告别命令行,图形化批量管理照片元数据的终极方案
  • 从Flask到FastAPI:如何用loguru为你的Web项目配置结构化日志(含JSON输出与上下文绑定)
  • PyTorch推理扩展实战:用Ray Data轻松实现多机多卡并行
  • 从‘硬’到‘软’:柔性阵列与稳健波束形成入门避坑指南
  • OFA图像语义蕴含模型保姆级部署指南:从零到一搭建Web应用
  • 避开汇川AM401 Socket通讯的那些坑:从功能块使能触发到端口选择的实战经验
  • RAG知识库切分:提升大模型效果的秘密武器(收藏版)
  • 手把手教你用NuSMV验证CTL公式:从安装到写出第一个AG/EF断言
  • 收藏!程序员轻松转型AI大模型,抓住风口改变命运!
  • 【2026年最新600套毕设项目分享】大学生就业平台微信小程序(30116)
  • 别再只会用光敏电阻开关灯了!解锁Arduino模拟信号(AO)的5个创意玩法
  • 别再只测眼图了!用示波器实测DDR3上电初始化时序(附力科配置与波形分析)
  • 如何用7款免费开源思源宋体CN彻底解决你的中文排版难题?
  • 算法训练营第七天|142.环形链表Ⅱ
  • 深入拆解:一块1.3寸SH1106 OLED屏里的GT20L16S1Y字库芯片是如何工作的
  • 别再混淆了!一文搞懂SM2双证书(签名/加密)与P10请求的完整关系链
  • 告别Python版本混乱!Windows 11下用pyenv-win保姆级配置指南(含Chocolatey安装)
  • Nginx配置踩坑实录:从403 Forbidden到优雅重定向,我的半天调试经历
  • Gin:自定义日志、验证器与中间件全指南
  • 别再为模糊的3D重建头疼了!手把手教你用3DSlicer处理DICOM数据,搞定医学影像三维可视化
  • zephyr邪修笔记(9)最简化自定义板子-定制化第一步
  • 告别VS2022!在VSCode里搞定.NET Framework 4.6项目的编译与调试(保姆级教程)
  • 别再只盯着压差了!手把手教你从PSRR、噪声到环路补偿,全面评估一颗LDO芯片
  • 深入理解传输中二层PW和三层BFD之间的关系
  • 从Cortex-M4/M7寄存器入手,聊聊中断嵌套与栈切换那些容易踩的坑
  • 3步破解百度网盘SVIP:macOS逆向工程实战指南
  • 强化学习1——初步理解PPO
  • 编码规范基础:业界通用代码风格总结
  • 别再手动改模型了!用timm库的create_model函数,5分钟搞定PyTorch迁移学习
  • 山东大学软件学院项目实训-创新实训-计科智伴(二)——个人博客(MinIO配置)