leetcode hot100刷题日记——35.子集

article/2025/7/12 23:11:32

在这里插入图片描述
解答:

方法一:选or不选的dfs(输入视角)

思路:[1,2,3]的全部子集可以看成是对数组的每一位数字做选择。
eg.空集就是一个数字都不选,[1,2]就是1,2选,3不选。

class Solution {
public:vector<vector<int>> res;//存所有结果用的vector<int> path;//存单个结果void dfs(vector<int>&nums,int pos,int size){if(pos==size){//遍历到了数组的最后,做完了所有的选择,为什么size是n前面的日记解释过了~res.emplace_back(path);//把单个结果放进总结果里面,注意emplace_back函数,之前也出现过几次了return;}//对于单个数字,我们的选择有两种//1.选path.push_back(nums[pos]);//放进单个数组dfs(nums,pos+1,size);//做好选择后再去做下一个选择path.pop_back();//回溯的精髓,恢复原状//2.不选dfs(nums,pos+1,size);//直接做下一个选择	}vector<vector<int>> subsets(vector<int>& nums) {int size=nums.size();dfs(nums,0,size);return res;}
};

时间复杂度:O(n2^n)
空间复杂度:O(n)

方法二:选or不选的dfs(输出视角)

思路:如果选了数组的某一位添加到答案末尾,那么下一个要添加到答案末尾的数,就要在这个某一位后面的数字中枚举了。用循环来帮忙

举个例子哦,对于子集[1,2,3]来说,从1开始思考,1要不要在我的子集里面,要的话那就放进去,不要的话那就恢复现场
再接着考虑下一位2……

class Solution {
public:vector<vector<int>> res;//存所有结果用的vector<int> path;//存单个结果void dfs(vector<int>&nums,int pos,int size){res.emplace_back(path);//每次做完这个数要不要选的结果都放进去总结果里面//从path的当前位置开始考虑要不要选for(int i=pos;i<size;i++){path.push_back(nums[i]);//要选dfs(nums,i+1,size);//下一个开始选择path.pop_back();//恢复现场}}vector<vector<int>> subsets(vector<int>& nums) {int size=nums.size();dfs(nums,0,size);return res;}
};

时间复杂度:O(n2^n)
空间复杂度:O(n)

方法三:二进制枚举
使用位运算来高效枚举所有可能的组合
比如[1,2,3],我们枚举xxx所有的二进制可能(000,001,010……)如果是000就是空集,001就是把3放进去,010就是放2……

二进制数对应的这一位是1就相当于选这位数,0就是不选。

class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {int n=nums.size();vector<vector<int>> res(1<<n);//一共1<<n种结果//i是结果数,j是位数for(int i=0;i<(1<<n);i++){for(int j=0;j<n;j++){// 判断第j位是否为1if(i>>j&1)res[i].push_back(nums[j]);//是1的话就放进去结果}} return res;}
};

时间复杂度:O(n2^n)
空间复杂度:O(1)


http://www.hkcw.cn/article/UNhjrkWQOo.shtml

相关文章

【数据库】关系数据库标准语言-SQL(金仓)下

4、数据查询 语法&#xff1a; SELECT [ALL | DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表名或视图名>[, <表名或视图名> ] … [ WHERE <条件表达式> ] [ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY <…

好用的C/C++/嵌入式 IDE: CLion的下载安装教程(保姆级教程)

CLion简介 CLion是由著名的JetBrains公司开发出的一个C/C的IDE。它原是付费软件&#xff0c;但在最近(指2025年5月)开放了非商业用途免费&#xff0c;就像WebStorm、Rider、RustRover等。 除了这些&#xff0c;JetBrains的IntelliJ IDEA(社区版)和PyCharm(社区版)也是免费的。…

SpringBoot统一功能处理

1.拦截器 拦截器是Spring框架提供的核心功能之一,主要是用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的…

prometheus v3.4.1正式发布!解析全新特性与安装指南,打造高效云原生监控体系

一、引言 随着云原生时代的快速发展&#xff0c;监控系统成为保障业务平稳运行的核心利器。作为CNCF&#xff08;Cloud Native Computing Foundation&#xff09;旗下的开源监控项目&#xff0c;Prometheus凭借其卓越的多维数据模型、灵活强大的查询语言及自主运行的架构设计&a…

PCA(K-L变换)人脸识别(python实现)

数据集分析 ORL数据集&#xff0c; 总共40个人&#xff0c;每个人拍摄10张人脸照片 照片格式为灰度图像&#xff0c;尺寸112 * 92 特点&#xff1a; 图像质量高&#xff0c;无需灰度运算、去噪等预处理 人脸已经位于图像正中央&#xff0c;但部分图像角度倾斜&#xff08;可…

资源预加载+懒加载组合拳:从I/O拖慢到首帧渲染的全面优化方案

简介 在移动应用开发领域,首帧渲染性能已成为用户体验的关键指标之一。根据2025年最新行业数据,首屏加载时间每延迟1秒,用户跳出率可能增加32%,直接影响应用评分和留存率。当应用启动时,布局解析、图片解码等I/O操作往往成为首帧渲染的主要瓶颈,导致用户看到白屏或黑屏时…

【Doris基础】Apache Doris中的Coordinator节点作用详解

目录 1 Doris架构概述 2 Coordinator节点的核心作用 2.1 查询协调与调度 2.2 执行计划生成与优化 2.3 资源管理与负载均衡 2.4 容错与故障恢复 3 Coordinator节点的关键实现机制 3.1 两阶段执行模型 3.2 流水线执行引擎 3.3 分布式事务管理 4 Coordinator节点的高可…

【基于阿里云搭建数据仓库(离线)】IDEA导出Jar包(包括第三方依赖)

1.双击"package”即可进行打包呈jar 2.双击后就会自动打包生成jar了&#xff0c; 生成的jar在这个目录下 3.右击&#xff0c;点击“复制路径/引用”&#xff0c;即可获得“绝对路径”、“根路径”等相关信息

id()函数:窥探Python变量内存地址的奥秘

在Python程序设计中&#xff0c;变量、对象和内存是紧密相连的核心概念。理解变量的内存地址&#xff0c;是理解Python变量本质、内存管理与性能优化的关键。Python内置函数id()&#xff0c;作为变量与对象身份&#xff08;identity&#xff09;的“指纹识别器”&#xff0c;为…

MySQL中的事务

事物特性 原子性:事物时最小的执行单位&#xff0c;不允许分割。事物的原子性确保动作要么全部完成&#xff0c;要么完全不起作用&#xff0c;如果在执行过程中发生错误&#xff0c;会被回滚到事物开始前的状态&#xff0c;就像这个事务从来没有执行过一样。一致性&#xff1a…

像素转换案例实战

本案例介绍像素单位的基本知识与像素单位转换API的使用。通过像素转换案例&#xff0c;向开发者讲解了如何使用像素单位设置组件的尺寸、字体的大小以及不同像素单位之间的转换方法。主要功能包括&#xff1a; 展示了不同像素单位的使用。展示了像素单位转换相关API的使用。 …

结构型设计模式之桥接模式

文章目录 1. 桥接模式概述2. 模式结构3. 桥接模式的优缺点优点缺点 4. 桥接模式的应用场景5. C#代码示例5.1 简单示例 - 形状与颜色5.2 更复杂的示例 - 跨平台消息发送系统 6. 桥接模式与其他模式的比较7. 真实世界中的桥接模式应用7.1 数据库驱动7.2 UI框架中的渲染机制 8. 桥…

RAG系统中如何检测幻觉?

虽然我们的 RAG 系统通过将答案基于真实的医学证据来减少幻觉,但我们发现了一个关键的差距:即使有引用,系统仍然可能产生不可靠的输出。 想想看:仅仅因为一个系统可以引用来源,并不意味着它正确地使用了这些来源。 模型可能会: 从检索到的文档中提取不相关的信息不适当…

world quant教程学习

Understanding Corporate Fundamental Data &#x1f50d; 了解企业基本面数据 Lets explore fundamental data&#x1f60a; Fundamentals capture the underlying business, financial and operational health of a company, usually reported every quarter. This data is t…

详解鸿蒙仓颉开发语言中的计时器

今天又到了大家喜闻乐见的科普环节&#xff0c;也可以说是踩坑环节&#xff0c;哈哈哈。今天聊一聊仓颉开发语言中的计时器&#xff0c;这部分可老有意思了。 为什么这么说呢&#xff0c;因为关于仓颉的计时器你几乎搜不到任何的文档&#xff0c;也没有相关的代码提示&#xf…

70多套创业商业融资计划书PPT模板分享

70多套创业商业融资计划书PPT模板分享&#xff0c;商业计划书、融资计划书为主的欧美风格PPT模板。 70多套创业商业融资计划书PPT模板分享&#xff1a;创业商业融资计划书PPT模板https://pan.quark.cn/s/e09456cd487b

基于 StarRocks + Iceberg,TRM Labs 构建 PB 级数据分析平台实践

作者&#xff1a; Vijay Shekhawat&#xff1a;TRM Labs 数据平台团队核心成员&#xff0c;精通实时流处理、数据湖仓架构及构建安全、高吞吐的数据分析管道&#xff0c;在推动 PB 级数据处理能力方面发挥了关键作用。 Andrew Fisher&#xff1a;TRM Labs 资深软件工程师&…

Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)

一、线程安全推理 在多线程环境中运行YOLO 模型需要仔细考虑&#xff0c;以确保线程安全。Pythons threading 模块允许您同时运行多个线程&#xff0c;但在这些线程中使用YOLO 模型时&#xff0c;需要注意一些重要的安全问题。本页将指导您创建线程安全的YOLO 模型推理。 1.1、…

机器学习知识图谱——朴素贝叶斯算法

目录 一、图解朴素贝叶斯算法知识图谱 二、基本概念 三、核心思想 四、为什么叫“朴素”? 五、算法流程图 六、常见模型类型 七、优点 与 缺点 八、实战代码 (以文本分类为例) 九、应用举例 机器学习知识图谱——朴素贝叶斯算法 一、图解朴素贝叶斯算法知识图谱 该…

ollama+open-webui,本地部署自己的大模型

目录 一、效果预览 二、部署ollama 1.ollama说明 2.安装流程 2.1 windows系统 2.1.1下载安装包 2.1.2验证安装结果 2.1.3设置模型文件保存地址 2.1.4拉取大模型镜像 2.2linux系统 2.2.1下载并安装ollama 2.2.2设置环境变量 2.2.3拉取模型文件 三、部署open-webui…