所有子集 剑指 Offer II 079

2023-10-26

我只是喜欢敲代码@_@

目录

题目描述

AC代码

思路分析


题目描述

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

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

示例 1:

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

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

提示:

1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums 中的所有元素 互不相同

AC代码

class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
    	set<vector<int>>sons;
    	for(auto & num:nums){
    		set<vector<int>>temp;
			for(auto it:sons){
				it.push_back(num);
				temp.insert(it);
			}
			sons.insert(temp.begin(),temp.end());
			sons.insert({num}); 		
		}
		vector<vector<int>>answer;
		answer.push_back({});
		for(auto & it:sons)
		answer.push_back(it);
		return answer;
    }
};

思路分析

先说一下解法哈,子集问题有很多种解决方法,我写的这个只有两层循环,回溯递归之类的也能写,这是C++写的代码,有大佬可以用四行python解决,同样的解决思路。

 

对于一串数字,我们想要找出它的所有子集,像1,2,3这个,我们第一次取出1,它自己本身是一个子集,我们把它存起来,第二次取出2,把2插入之前找到的子集中,就有了1,2这个子集,再把它自己存进去,第三次取出3,把3插入之前找到的子集,这样就会有1,3和2,3和1,2,3这些子集,再把3自己存进去。

基本思路是这样,实际操作的时候,会出现重复的子集,所以我们需要先用set来去重,嘻嘻嘻,你会不会有一个疑惑,为什么不一开始就用set,非要我们返回一个vector的呢,我起初也有这样的疑惑,直到我发现set不会存在{}这个空集,而vector可以装一个{}的时候就豁然开朗了。

 

还有一个问题,我依照这样的思路写的第一次代码其实长这样:

    	for(auto num:nums){
			for(auto it:sons){
				it.push_back(num);
				sons.insert(it);
			}
			sons.insert({num}); 		
		}

没有引入一个临时变量temp,直到运行超时,手动调试发现这个地方无限循环,原因在于sons每次都加一个元素,然后就不会终结循环,所以得引入一个变量。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

所有子集 剑指 Offer II 079 的相关文章

随机推荐

  • Java文件上传【通用】

    Java文件上传 主要是针对于网页来说 一般是通过input的file类型上传文件流到后台 再通过后台处理将文件移动到指定位置达到上传的目的 这里贴代码时 主要是以springboot框架为例 但是是通用的 1 表单提交上传
  • django从1.7升级到1.9后 提示:RemovedInDjango110Warning

    Django项目 把django从1 7升级到1 9后 大量报错 需要做如下修改 1 修改urls py 在django1 9里 urls的配置不再支持字符串型的路由 需要先import 然后直接引用 更加清晰 比如 urlpatterns
  • elk笔记5.2--logstash使用

    elk笔记5 2 logstash使用 1 介绍 2 使用案例 2 1 通过type隔离多个索引 2 2 通过pipeline隔离多个索引 3 注意事项 4 说明 1 介绍 logstash 资源充足的情况下 每个logstash示例采集
  • PromQL的简单使用

    PromQL的简单使用 一 背景 二 PromQL的数据类型 三 字面量 1 字符串字面量 2 浮点数字面量 四 时间序列选择器 1 即时向量选择器 1 组成部分 2 指标名称和匹配器的组合 3 匹配器 2 区间向量选择器 1 时间格式 3
  • 流媒体压力测试工具—推拉流

    目录 前言 介绍 St load 安装篇 推流篇 拉流篇 前言 流媒体压力测试是评估流媒体系统性能和稳定性的重要环节 它可以模拟大量用户同时推送和拉取流媒体数据 以验证系统在高负载情况下的表现 为了进行流媒体压力测试 我们可以使用推拉流工具
  • DN值、辐射率、反射率等

    数字量化值 Digital Number DN 像素值的通用术语是数字量化值或DN值 它通常被用来描述还没有校准到具有意义单位的像素值 如果你只是想看一个图像 和不打算解释像素值的物理意义 那么就可以以DN值的方式来保存 辐射率 Radia
  • 极智AI

    欢迎关注我的公众号 极智视界 获取我的更多笔记分享 大家好 我是极智视界 本文讲解一下 C 手写 softmax 激活函数 在多分类任务中 最后通常使用 softmax 函数作为网络输出层的激活函数 softmax 函数可以对输出值作归一化
  • 互联网络安全、信息安全、计算机网络安全、信息保障有什么区别?

    据CNBC报道 由于黑客 安全漏洞和恶意软件攻击继续成为行业媒体报道的头条新闻 网络犯罪已成为一种全球 流行病 去年对全球组织和人员造成的损失约6000亿美元 因此 打击此类活动已成为一项有利可图且有益的事业 这并不奇怪 所以 如果你正在考
  • 【力扣】1337.矩阵中战斗力最弱的k行

    给你一个大小为 m n 的矩阵 mat 矩阵由若干军人和平民组成 分别用 1 和 0 表示 请你返回矩阵中战斗力最弱的 k 行的索引 按从最弱到最强排序 如果第 i 行的军人数量少于第 j 行 或者两行军人数量相同但 i 小于 j 那么我们
  • Spring中ApplicationContext加载机制

    加载器目前有两种选择 ContextLoaderListener和ContextLoaderServlet 只是一个是基于Servlet2 3版本中新引入的Listener接口实现 而另一个基于Servlet接口实现 开发中可根据目标Web
  • 【网站汇总】一些OJ平台

    目录 前言 一 HDU孵化器 二 HDU OJ 三 PTA 四 洛谷 五 力扣 LeetCode 前言 以下是一些OJ平台 一 HDU孵化器 链接 http hdufhq cn 8888 二 HDU OJ 链接 http code hdu
  • Linux下删除正在写入的文件会发生什么?

    一 成功 删除 了一个正在写入的文件 某日 我启动了一个进程 向一个文件a txt中写入内容 但不小心在另一个窗口用命令rm f a txt把它删除了 我以为这应该会触发一个警告 比如 不能删除一个打开的正在写入的文件 之类的 结果命令干脆
  • WinServer 2012 AD 组策略 用户发布软件部署

    本例演示安装 Notepad 这款软件 因为域中发布软件只支持 msi 格式 所以要把 exe 转成 msi 格式 可以用这个软件 https www advancedinstaller com 1 转换格式 1 选择 MSI from E
  • 数学建模 - 数学规划

    来自清风的数学建模课程 主要是用于自己复习看 所以截图较多 数学规划 概述 分类 线性规划 非线性规划 整数规划 0 1规划 线性规划 对于求解最大值要让目标函数的系数 max z min z 线性规划公式 x fval linprog c
  • 第十四届蓝桥杯模拟赛(第一期)——C语言版

    1 二进制位数 问题描述 十进制整数 2 在十进制中是 1 位数 在二进制中对应 10 是 2 位数 十进制整数 22 在十进制中是 2 位数 在二进制中对应 10110 是 5 位数 请问十进制整数 2022 在二进制中是几位数 incl
  • PHP导出excel文件的几种方式

    先说说动态生成的内容当作文件来下载的方法 1 通过把Content Type设置为application octet stream 可以把动态生成的内容当作文件来下载 content type内容设置可以参看 http www ostool
  • 父类对象的属性直接赋值给子类对象(使用copyProperties中的方法copyProperties)

    BeanUtils copyProperties 是 Apache Commons BeanUtils 包中提供的一个方法 用于将一个 JavaBean 对象的属性值赋值到另一个 JavaBean 对象中 该方法可以简化 JavaBean
  • springmvc @ResponseBody参数解析核心代码分析 -8

    org springframework web servlet mvc method annotation RequestResponseBodyMethodProcessor supportsParameter 只要参数上有 Reques
  • BAPI_ACC_DOCUMENT_POST用法

    文章目录 1 Overall 2 Code 1 Overall The blog will demostrate how to use BAPI ACC DOCUMENT POST We use enhancement for it 2 C
  • 所有子集 剑指 Offer II 079

    我只是喜欢敲代码 目录 题目描述 AC代码 思路分析 题目描述 给定一个整数数组 nums 数组中的元素 互不相同 返回该数组所有可能的子集 幂集 解集 不能 包含重复的子集 你可以按 任意顺序 返回解集 示例 1 输入 nums 1 2