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

手机网站活动策划方案网页设计与制作教程题库

手机网站活动策划方案,网页设计与制作教程题库,网络营销策划方案设计,腾讯云网站安全认证78. 子集 ✅ 一、算法逻辑讲解(逐步思路) 逻辑讲解: dfs(i):表示从下标 i 开始,做“选 or 不选”的子集构造。 终止条件 if i n: 到达数组末尾,表示一种完整子集构造完成。 把当前构造路径…

78. 子集

✅ 一、算法逻辑讲解(逐步思路)

逻辑讲解:

  1. dfs(i):表示从下标 i 开始,做“选 or 不选”的子集构造。

  2. 终止条件 if i == n

    • 到达数组末尾,表示一种完整子集构造完成。

    • 把当前构造路径 path 复制一份加入 ans

  3. 每个位置都有两种选择:

    • 不选当前元素:直接 dfs(i+1)

    • 选当前元素:先加入 path,然后 dfs(i+1)

    • 完成后通过 path.pop() 撤销选择,回溯到上一状态。

  4. 初始从 dfs(0) 开始,表示从第一个元素开始构造子集。


⭐ 二、核心思路(算法关键点)

核心点是:使用 DFS + 回溯 来枚举所有子集

  • 每个元素有两个选择:选 or 不选。

  • 用 DFS 的递归树遍历所有选择路径。

  • 每条路径就是一个合法子集。

  • 通过 path.pop() 回溯上一步,探索下一个可能性。

这是一种更容易理解、便于剪枝的通用枚举方式,相比位运算法更直观(适合初学者理解和复杂问题扩展)。

class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:ans = []n = len(nums)path = []def dfs(i:int) -> None:if i == n:ans.append(path.copy())returndfs(i+1)path.append(nums[i])dfs(i+1)path.pop()dfs(0)return ans

⏱ 三、时间复杂度分析

时间复杂度:O(n * 2^n)

  • 一共会递归 2^n 次(每个元素选 or 不选)。

  • 每次递归最多生成一个子集,长度最多为 n,需要复制(path.copy())。

  • 所以整体复杂度为 O(n * 2^n)


💾 四、空间复杂度分析

空间复杂度:O(n) + O(n * 2^n)

  1. 递归栈空间:O(n)

    • 递归深度最大为 n,每层递归函数栈消耗是常量级。

  2. 输出空间:O(n * 2^n)

    • 一共 2^n 个子集,每个子集长度最多为 n

  3. 临时变量 pathO(n)

    • 存储当前路径,最大长度为 n

如果只考虑「辅助空间」,则是 O(n)(递归 + path)。

http://www.dtcms.com/wzjs/736513.html

相关文章:

  • 福建省建设厅考试网站做php网站用mvc多吗
  • 网上自建网站开店西安商城网站制作
  • 免费申请空间网站动漫网页制作
  • 专业的广州微网站建设模板网站优
  • 企业做网站有用么qq是腾讯旗下的吗
  • wordpress看文网站找工作 招聘附近8小时双休
  • 有自己的网站如何做淘宝客湘潭网站建设问下磐石网络
  • 珠宝行业网站建设建网站多少钱可以卖货的
  • 软件开发费和网站建设个人网站建设方案书 备案
  • pc端的移动端网站建设怀化高速网站
  • 杭州网站建设浙江淘宝网站建设图片素材
  • 池州商城网站开发如何将网址做成链接
  • 福州网站开发公司WordPress 微信小程序登录
  • 枝江网站建设win7 iis新建网站
  • 网站建设规划设计书wordpress彩色内链
  • asp汽车租凭网站源码如何seo推广
  • 手机网站可以做英文版本吗wordpress 经验插件
  • 网站logo在哪里帝国cms 网站地址设置
  • 电子商务中的网站开发互联网的营销推广方式
  • 华意网站建设网络公司怎么样怎么查找网站
  • 哪个网站是做包装材料珍珠棉包管做头条信息流要网站吗
  • 织梦技术网站模版用r做简易的网站
  • phpcms 网站名称标签公司建网站多
  • 站长素材深圳外贸公司待遇怎么样
  • 门窗厂家东莞网站建设无锡seo推广公司
  • 怎么自己做一个网站做网站 视频外链
  • 网站开发有什么网站app模板素材下载免费
  • 网站项目管理系统网站机房建设方案
  • 网站建设空格怎么打我为群众办实事活动方案
  • 郓城菏泽网站建设网络营销策略相关理论