LeetCode 面试题08.04.幂集

幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。

说明:解集不能包含重复的子集。

示例:

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

法一:幂集有2的n次方个,我们可以从0开始循环到2的n次方减1,每次循环生成一个幂集,方法是数字中为1的位对应位置的数放入当前幂集中:

class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {int setSize = 1 << nums.size();vector<vector<int>> ans;for (int i = 0; i < setSize; ++i){ans.push_back({});for (int j = 0; j < nums.size(); ++j){if (i & (1 << j)){ans.back().push_back(nums[j]);}}}return ans;}
};

如果nums的长度为n,此算法时间复杂度为O(n2 n ^n n),一共有2 n ^n n种子集,每种需要n的时间来构建;空间复杂度为O(1)。

法二:递归模拟:

class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> ans;vector<int> oneAns;build(0, nums, oneAns, ans);return ans;}private:void build(int index, vector<int> &nums, vector<int> &oneAns, vector<vector<int>> &ans){if (index == nums.size()){ans.push_back(oneAns);return;}oneAns.push_back(nums[index]);build(index + 1, nums, oneAns, ans);oneAns.pop_back();build(index + 1, nums, oneAns, ans);}
};

如果nums的长度为n,此算法时间复杂度为O(n2 n ^n n),空间复杂度为O(n)。

法三:先构建一个空集,每遍历到一个元素,将其加入现有的任意集合都可以构成一个新的集合:

class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> ans;ans.push_back({});for (int i = 0; i < nums.size(); ++i){int ansSize = ans.size();for (int j = 0; j < ansSize; ++j){vector<int> temp = ans[j];temp.push_back(nums[i]);ans.push_back(temp);}}return ans;}
};

如果nums的长度为n,此算法时间复杂度为O(2 n ^n n),空间复杂度为O(1)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/731397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MapReduce】03.MapReduce框架原理

目录 1.InputFormat数据输入 1.1.切片与MapTask并行度决定机制 1.2.Job提交流程源码和切片源码 1.3.FileInputFormat切片机制 1.4.TextInputFormat 1.5.CombineTextInputFormat切片机制 1.6.CombineTextInputFormat 1.InputFormat数据输入 1.1.切片与MapTask并行度决定…

CSS盒子模型笔记

尚硅谷学习视频链接&#xff1a;117_CSS_盒子模型的组成部分_哔哩哔哩_bilibili 1、盒子组成 盒子组成 content内容 padding border &#xff08;margin不包含在盒子内&#xff09; 2、div样式width、height 当css3属性box-sizingcontent-box&#xff08;默认&#xff0…

0-hackbar最新版本(2.3.1)工具安装(超详细)

通过火狐搜索安装后&#xff0c;是需要收费的&#xff0c;获取url都是困难的 打开火狐浏览器右上角的三个横线-拓展和主题 百度界面按F12后的提示 修改过程&#xff1a; 按照如上一步步找到对应的文件&#xff0c;拖到桌面上 是一个xpi文件&#xff0c;以打开压缩包的方式打开…

漏洞复现-蓝凌LandrayOA系列

蓝凌OA系列 &#x1f52a; 是否利用过 优先级从高到低 发现日期从近到远 公司团队名_产品名_大版本号_特定小版本号_接口文件名_漏洞类型发现日期.载荷格式LandrayOA_Custom_SSRF_JNDI漏洞 LandrayOA_sysSearchMain_Rce漏洞 LandrayOA_Custom_FileRead漏洞

python中的模块

6模块 退出 Python 解释器后&#xff0c;再次进入时&#xff0c;之前在 Python 解释器中定义的函数和变量就丢失了。因此&#xff0c;编写较长程序时&#xff0c;最好用文本编辑器代替解释器&#xff0c;执行文件中的输入内容&#xff0c;这就是编写 脚本 。随着程序越来越长&…

智能音箱技术解析

目录 前言智能音箱执行步骤解析1.1 探测唤醒词或触发词1.2 语音识别1.3 意图识别1.4 执行指令 2 典型的智能音箱2.1 百度小度音响2.2 小米小爱同学2.3 苹果 HomePod 3 功能应用举例3.1 设置计时器3.2 播放音乐 结语 前言 智能音箱已经成为日常生活中不可或缺的一部分&#xff…

飞驰云联CEO朱旭光荣获“科技领军人才”称号

2024年2月29日&#xff0c;苏州工业园区“优化营商环境暨作风效能建设大会”成功举办&#xff0c;会上公布了2023年度苏州工业园区第十七届第一批金鸡湖科技领军人才名单&#xff0c;Ftrans飞驰云联创始人兼CEO朱旭光先生凭借在数据安全以及文件交换领域取得的突出成果&#xf…

【完美实现】VITE + VUE3 + SVG图片解析+element-plus开发环境初始化(基于macos)

一、最终效果 废话少说&#xff0c;直接上效果 这是我的初始化程序提供的页面&#xff0c;在这个页面上实现了一下几个功能&#xff1a; 1、vite初始化之后的路由安装和初始化&#xff1b; 2、标准SVG的解析&#xff0c;并可调整大小、颜色&#xff1b; 3、element-plus的安…

铭文资产是比特币生态破局者 or 短暂热点?

比特币作为加密货币的鼻祖&#xff0c;一直以来都扮演着数字资产市场的引领者角色。最近几年&#xff0c;随着 BRC20 项目的兴起&#xff0c;我们看到了更多与比特币相互关联的创新。在比特币生态中&#xff0c;BRC20 项目不仅仅是数字资产的代表&#xff0c;更是一种对于区块链…

【SpringMVC】响应数据 第二期

文章目录 一、handler方法分析二、页面跳转控制2.1 快速返回模板视图2.2 转发和重定向 三、返回JSON数据&#xff08;重点&#xff09;3.1 前置准备3.2 ResponseBody3.3 RestController 四、返回静态资源处理4.1 静态资源概念4.2 静态资源访问和问题解决 总结混合开发 与 前后端…

文件目录 ./ ../ /的区别

基础知识 1.路径中“./”、“../”、“/”代表的含义 “./”&#xff1a;代表目前所在的目录。 “…/”&#xff1a;代表上一层目录。 “/”&#xff1a;代表根目录。 举个栗子&#xff1a; 在读取文件时,路径的写法有如下方式 1、文件在当前目录&#xff08;以图像文件为例&…

go go.mod file not found in current directory or any parent directory

场景&#xff1a; 安装好 liteide 之后创建了第一个 “hello world” 的golang 项目&#xff0c;却报了如下错误。 原因分析&#xff1a; go 的环境配置问题。与 golang 的包管理有关。 解决方案&#xff1a; 如果你是 Windows 系统&#xff0c;快捷键 “WinR”&#xff0c…

iOS开发进阶(八):ipa应用唤起并跳转至指定页面

文章目录 一、前言二、应用跳转三、延伸阅读 OC函数与参数四、拓展阅读 一、前言 可通过 react-native log-android、react-native log-ios 命令查看控制台日志信息。 添加版本标识可通过 npx react-native run-android --variantrelease 实现。 APP间互相唤起是常用场景&am…

【QT+QGIS跨平台编译】之七十二:【QGIS_CORE+Qt跨平台编译】之二(一套代码、一套框架,跨平台编译)

文章目录 一、pro文件二、编译实践由于博客文章和篇幅限制,【QGIS_CORE+Qt跨平台编译】分为两节介绍。 一、pro文件 形成qgis_core.pro文件: QT += core gui xml widgets svg printsupport network sql concurrent serialport positioningTEMPLATE = lib CONFIG += c++17 …

视频点播系统|基于SSM 框架+ Mysql+Java+B/S架构技术的视频点播系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

目录 文末获取源码 系统功能实现 学生前台功能 学生登录、学生注册 个人中心 视频信息 我的收藏 系统公告 教师功能实现 管理员登录 管理员功能实现 视频分类管理 轮播图管理 数据库设计 系统的功能结构图 lumwen参考 概述 源码获取 文末获取源码 系统功能实…

NextJs教程系列(四):路由loading

loading加载 loading.js 可以帮助你使用React Suspense创建一个组件, 当你在加载路由内容时&#xff0c;它会显示该加载状态组件&#xff0c;渲染完成后&#xff0c;新的内容将会自动替换。 传统ssr渲染流程 传统的ssr渲染流程&#xff0c;当用户请求一个页面时&#xff0c;服…

手机浏览器contextmenu设置e.preventDefault()无效

手机浏览器中屏蔽img的系统右键菜单context menu-CSDN博客 监听 contextmenu 设置 e.preventDefault() 阻止默认右键菜单弹出&#xff0c;在PC端有效&#xff0c;在手机浏览器无效。 img.addEventListener(contextmenu, function(e){e.preventDefault();menu.style.display …

荔枝派zero驱动开发06:GPIO操作(platform框架)

参考&#xff1a; 正点原子Linux第五十四章 platform设备驱动实验 一张图掌握 Linux platform 平台设备驱动框架 上一篇&#xff1a;荔枝派zero驱动开发05&#xff1a;GPIO操作&#xff08;使用GPIO子系统&#xff09; 下一篇&#xff1a;更新中… 概述 platform是一种分层思…

ELK介绍使用

文章目录 一、ELK介绍二、Elasticsearch1. ElasticSearch简介&#xff1a;2. Elasticsearch核心概念3. Elasticsearch安装4. Elasticsearch基本操作1. 字段类型介绍2. 索引3. 映射4. 文档 5. Elasticsearch 复杂查询 三、LogStash1. LogStash简介2. LogStash安装 四、kibana1. …

向爬虫而生---Redis 探究篇8<保障缓存和持久化数据一致性的研究与实现(中) `方案篇`>

前言: 继续上一篇向爬虫而生---Redis 探究篇8<保障缓存和持久化数据一致性的研究与实现(1)>-CSDN博客 缓存双写一致性是指在系统中同时使用缓存和持久化存储时,保证两者数据的一致性。我们将探讨四种缓存双写一致性的解决方案: 先更新持久化存储再更新缓存先更新缓存再更…