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

网站服务器租赁费用公司推广方案

网站服务器租赁费用,公司推广方案,仿百度百家号模板wordpress,div css简单网站题目: 给定一个数组nums,数组中的元素互不相同,返回该数组所有可能子集(幂集) 解集不能包含重复的子集,可以按任意顺序返回解集 方法一:迭代法实现子集枚举 记原序列中元素的总数为 n,原序列…

题目:

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

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


方法一:迭代法实现子集枚举

记原序列中元素的总数为 n,原序列中的每个数字 ai​ 的状态可能有两种,即「在子集中」和「不在子集中」。我们用 1 表示「在子集中」,0 表示不在子集中,,那么每一个子集可以对应一个长度为 n 的 0/1 序列,第 i 位表示 ai​ 是否在子集中。例如,n=3 ,a={5,2,9} 时:

可以发现 0/1 序列对应的二进制数正好从 0 到 2 n −1。我们可以枚举 mask∈[0,2 n −1],mask 的二进制表示是一个 0/1 序列,我们可以按照这个 0/1 序列在原集合当中取数。当我们枚举完所有 2 
n 个 mask,我们也就能构造出所有的子集。

class Solution(object):def subsets(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""ans=[] #一个空列表用于存储所有子集for i in range(1<<len(nums)):#位移操作,等价于 2 ** len(nums)subset=[]for j,x in enumerate(nums):# 遍历 nums,获取每个元素 x 及其索引 jif i>>j&1:# 如果 i 右移 j 位后与 1 按位与的结果为 1subset.append(x)# 将当前元素 x 添加到 subset 中ans.append(subset)return ans
  • 时间复杂度:O(n2n),其中 n 为 nums 的长度。
  • 空间复杂度:O(1)。返回值的空间不计

方法二:递归

开始假设输出子集为空,遍历数组,对于数组中的每一个整数,每一步都向输出子集中所有子集添加这个整数,并生成新的子集。

dfs(0)
├── 包含 nums[0] = 1
│   └── dfs(1)
│       ├── 包含 nums[1] = 2
│       │   └── dfs(2)
│       │       ├── 包含 nums[2] = 3
│       │       │   └── dfs(3) → 添加 [1, 2, 3]
│       │       └── 不包含 nums[2] = 3
│       │           └── dfs(3) → 添加 [1, 2]
│       └── 不包含 nums[1] = 2
│           └── dfs(2)
│               ├── 包含 nums[2] = 3
│               │   └── dfs(3) → 添加 [1, 3]
│               └── 不包含 nums[2] = 3
│                   └── dfs(3) → 添加 [1]
└── 不包含 nums[0] = 1
    └── dfs(1)
        ├── 包含 nums[1] = 2
        │   └── dfs(2)
        │       ├── 包含 nums[2] = 3
        │       │   └── dfs(3) → 添加 [2, 3]
        │       └── 不包含 nums[2] = 3
        │           └── dfs(3) → 添加 [2]
        └── 不包含 nums[1] = 2
            └── dfs(2)
                ├── 包含 nums[2] = 3
                │   └── dfs(3) → 添加 [3]
                └── 不包含 nums[2] = 3
                    └── dfs(3) → 添加 []

class Solution(object):def subsets(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""t=[]  #用于存储当前子集ans=[] # 用于存储所有子集def dfs(cur): #定义深度优先搜索函数,cur 表示当前处理的索引if cur==len(nums): ## 如果当前索引等于 nums 的长度,说明已经处理完所有元素ans.append(t[:])# # 将当前子集 t 的拷贝添加到结果 ans 中return t.append(nums[cur])#将当前元素 nums[cur] 添加到子集 t 中dfs(cur + 1)  # 递归处理下一个元素t.pop()# 回溯,移除当前元素,恢复子集 tdfs(cur+1)# 不包含当前元素,递归处理下一个元素dfs(0)return ans

时间复杂度:O(n×2**n )。一共 2 **n个状态,每种状态需要 O(n) 的时间来构造子集。

空间复杂度:O(n)。临时数组 t 的空间代价是 O(n),递归时栈空间的代价为 O(n)。

源自力扣官方题解
 

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

相关文章:

  • 搭建网站 软件阿里云模板建站
  • 临朐网站建设哪家好昆山网站制作公司
  • 怎么封锁网站水果营销软文
  • 办公室装修大概多少钱一平方直通车关键词怎么优化
  • 厦门市网站建设软件开发公司网络营销策划名词解释
  • 老域名新网站推广培训学校
  • 外海赌博如何做网站的推广个人网页制作完整教程
  • 做seo需要会网站开发吗国外搜索引擎入口
  • 做网站是那个语言写的建立一个网站需要多少钱?
  • 建模网站素材营销策略怎么写范文
  • 做网站找雷鸣宁波百度推广优化
  • 泉州手机网站开发郑州关键词优化顾问
  • 沈阳哪有做网站的网络营销概念
  • 网络营销有什么用整站优化外包服务
  • wordpress 换logo搜索网站排名优化
  • 网站营销外包哪家专业推广类软文
  • 建可收费的网站长春网站优化流程
  • 营业执照名称查询系统东莞关键字排名优化
  • 做装修网站价格石家庄房价
  • 天津免费做网站网站设计服务企业
  • 防盗网站人做清洁广告营销方式有哪几种
  • 动态网站上的查询怎么做广州网页制作
  • 做网站能月入10万深圳seo专家
  • 府网站建设运维情况自查报告百度产品大全
  • 网站二级联菜单怎么做百度竞价排名是哪种方式
  • 深圳英文网站开发公司看广告收益最高的软件
  • 杭州网站建设公司有哪几家武汉网络推广公司
  • 珠海网站品牌设计公司简介广告平台网站有哪些
  • 下载网站程序外链平台
  • 免费咨询服务合同模板温州企业网站排名优化