LeetCode 剑指 Offer II 079. 所有子集
给定一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
示例 1:
输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums 中的所有元素 互不相同
解法一:如果输入数组大小为n,则子集数量为2n^nn,我们可以从0循环到2n^nn-1,对于循环到的每个数字i,其中二进制位为1的位对应输入数组中的元素加入到当前子集中:
class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {int sz = nums.size();int subSetsNum = pow(2, sz);vector<vector<int>> ans;for (int i = 0; i < subSetsNum; ++i) {vector<int> cur;for (int j = 0; j < sz; ++j) {if ((1 << j) & i) {cur.push_back(nums[j]);} }ans.push_back(cur);}return ans;}
};
如果输入数组大小为n,此算法时间复杂度为O(n*2n^nn),空间复杂度为O(n)。
解法二:递归处理,每处理到一个元素时,有两种处理方法,将其加入子集或不加入子集:
class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> ans;vector<int> current;recursion(0, nums, current, ans);return ans;}private:void recursion(int pos, vector<int> &nums, vector<int> ¤t, vector<vector<int>> &ans) {int sz = nums.size();if (pos == sz) {ans.push_back(current);return;}// 不加当前位置元素recursion(pos + 1, nums, current, ans);// 加当前位置元素current.push_back(nums[pos]);recursion(pos + 1, nums, current, ans);current.pop_back();}
};
如果输入数组大小为n,此算法时间复杂度为O(n*2n^nn),一共有2n^nn种子集,每种需要O(n)的时间加入结果数组ans,空间复杂度为O(n),主要是栈空间开销和current数组开销。
相关文章:
LeetCode 剑指 Offer II 079. 所有子集
给定一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出:[[],[1],[2],[1,2],[3…...
打印名片-课后程序(Python程序开发案例教程-黑马程序员编著-第二章-课后作业)
实例3:文本进度条 进度条以动态方式实时显示计算机处理任务时的进度,它一般由已完成任务量与剩余未完成任务量的大小组成。本实例要求编写程序,实现图1所示的进度条动态显示的效果。 下载中下载完成图1文本进度条 实例分析 在本实例中可以将…...
为什么我们在判断字符串不为null后还要判断字符串长度大于0?
我们在做字符串判断时一般会: if (s ! null && s.length() > 0) {} 但是我就在想,字符串不为空了,那么他一定有值,字符串长度不就大于0吗,所以s.length()>0是不是有点多余? 我的思维误区是…...
javaEE 初阶 — 应用层中的 DNS 协议(域名解析系统)
文章目录什么是域名1. 如何建立 域名 与 IP 的对应关系2. 域名的分级什么是域名 域名也就是平常所说的网址,比如 www.baidu.com。 其实网络上的服务器要访问这个网址,需要的是 IP 地址。、 但是 IP 地址比较拗口不方便记忆,于是就有使用一些…...
【网络】-- 网络编程套接字(铺垫、预备)
目录 理解源IP地址和目的IP地址 认识端口号 端口号 理解源端口号和目的端口号 套接字 认识TCP与UDP协议 网络字节序 socket编程接口 socket 常见API sockaddr结构 理解源IP地址和目的IP地址 就如同我们唐僧的取经路: 唐僧的出发地到目的地:东…...
一文打通@SentinelResource
Sentinel 提供了 SentinelResource 注解用于定义资源,并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException 等 如果使用的是Sentinel Annotation AspectJ Extension,需要导这个依赖 <dependency><groupId>com.alibaba.csp</…...
苹果手机备份的文件在电脑什么地方 苹果备份文件怎么查看
在这个网络信息时代,为手机进行定期备份已经成为了家常便饭。在使用备份软件对苹果手机进行备份后,苹果手机备份的文件在什么地方,苹果备份文件怎么查看呢?本文就带大家来了解一下。 一、苹果手机备份的文件在电脑什么地方 大家…...
【MySQL速通篇001】5000字超详细介绍MySQL部分重要知识点
🍀 写在前面 这篇5000多字博客也花了我几天的时间😂,主要是我对MySQL一部分重要知识点的理解【后面当然还会写博客补充噻,欢迎关注我哟】,当然这篇文章可能也会有不恰当的地方【毕竟也写了这么多字,错别字可…...
并发编程——synchronized优化原理
如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:耶瞳空间 一:基本概念 使用synchronized实现线程同步,即加锁,实现的是悲观锁。加锁可以使一段代码在同一时间只有一个线程可以访问,在增加安全性的同…...
LeetCode 剑指 Offer II 083. 没有重复元素集合的全排列
给定一个不含重复数字的整数数组 nums ,返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 1 < nums.length < 6 -10 < nu…...
JSONObject与JSONArray使用区别
目录 1.使用的场景区别 2. 使用方法区别 3.获取方式不同 4. 解析JSON字符串 5.总结 1.使用的场景区别 想通过键值对的形式获取数据,使用JSONObject。如果后台查询的是某个bean的list集合向前端页面传递,使用JSONArray。 2. 使用方法区别 创建方法不…...
经典C程序例程:通过进程ID得到文件名
通过进程ID得到文件名 #include <stdio.h> #include <windows.h> #include <tlhelp32.h> #include <tchar.h>BOOL EnablePrivilege(HANDLE hToken,LPCSTR szPrivName); void DispProcess(void); void DispPrsFile(void);// typedef BOOL (_stdcall *E…...
【Java】Spring MVC程序开发
文章目录Spring MVC程序开发1. 什么是Spring MVC?1.1 MVC定义1.2 MVC 和 Spring MVC 的关系2. 为什么学习Spring MVC?3. 怎么学习Spring MVC?3.1 Spring MVC的创建和连接3.1.1 创建Spring MVC项目3.1.2 RequestMapping 注解介绍3.1.3 Request…...
leetcode题解-704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解释: 9 出现…...
2.2 C语言程序的错误条件
在C语言程序中,条件语句决定程序的执行路径,因此条件表达式是程序的关键。 应用最经典的程序,除法的减法实现程序,解释条件表达式的重要性。x=y*q+r,x是被除数,y是除数,q是商,r是余数。 程序的方法, x=(r-y)+y*(1+q)。 main(){ /*错误条件的程序*/ r:=x; q:=0; whil…...
laravel 邮件发送
配置 Laravel 的邮件服务可以通过 config/mail.php 配置文件进行配置。 邮件中的每一项都在配置文件中有单独的配置项,甚至是独有的「传输方式」,允许你的应用使用不同的邮件服务发送邮件 mailers > [smtp > [transport > smtp,host > env(M…...
高性能 Jsonpath 框架,Snack3 3.2.57 发布
Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档…...
Android---进程间通信机制3
1 服务如何注册到 SM 中 getIServiceManager().addService(name, service, false); getIServiceManger --- new ServiceManagerProxy(new BinderProxy()) BinderInternal.getContextObject --- 返回 BinderProxy 对象 ProcessState::self()->getContextObject: 创建一个 BpB…...
Python实战,爬取金融期货数据
大家好,我是毕加锁。 今天给大家带来的是 Python实战,爬取金融期货数据 文末送书! 文末送书! 文末送书! 任务简介 首先,客户原需求是获取https://hq.smm.cn/copper网站上的价格数据(注:获取的是…...
Allegro如何导入第三方网表操作指导
Allegro如何导入第三方网表操作指导 在用Allegro做PCB设计的时候,除了支持第一方网表的导入,同样也是可以导入第三方网表的,第三方网表如下图 如何导入,具体操作如下 点击Setup点击User Preference...
QT老版本下载被拒?手把手教你用迅雷搞定5.12.12和4.8.7离线安装包
QT老版本下载难题破解:从地址拼接到离线安装全指南 遇到QT老版本下载被拒的提示?别急着放弃。对于需要维护遗留系统或确保项目兼容性的开发者来说,获取特定版本的QT框架往往成为一道必须跨越的门槛。本文将带你深入理解QT官方下载机制&#…...
2026企业AI落地必看:避开3大坑,让你的智能体真正帮你赚钱!收藏这份实战指南
本文深入探讨了企业AI智能体落地的现实难题,包括数据基础薄弱、单体智能体处理复杂流程能力不足以及人机协同缺失三大痛点。作者通过分析30企业案例,提出了针对性的解决方案:建立RAG架构和OCR数据清洗以夯实数据基础;采用多智能体…...
终极Windows驱动管理指南:如何用DriverStore Explorer快速释放30GB磁盘空间
终极Windows驱动管理指南:如何用DriverStore Explorer快速释放30GB磁盘空间 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer DriverStore Explorer(简称RAPR&…...
Qwen2-VL-2B-Instruct实操手册:本地化安全机制与temp_images权限控制说明
Qwen2-VL-2B-Instruct实操手册:本地化安全机制与temp_images权限控制说明 1. 项目核心:理解GME-Qwen2-VL模型 你可能听说过很多能“看图说话”的AI模型,但今天要介绍的 GME-Qwen2-VL-2B-Instruct 有点不一样。它不是一个和你聊天的机器人&a…...
【通信】基于matlab MC-CDMA系统仿真【含Matlab源码 15245期】
💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞Ὁ…...
golang如何实现零知识证明基础_golang零知识证明基础实现教程
Go 不内置零知识证明能力,需依赖第三方库;主流ZKP工具链绑定Rust/C/TS,Go生态缺乏生产级原生实现;crypto包仅提供基础原语,无法支撑ZKP所需多项式承诺、配对运算等高级密码操作。Go 本身不内置零知识证明(Z…...
从404到无损输出:一个Favicon抓取API的三年优化笔记(含CDN、懒加载避坑指南)
从404到毫秒响应:Favicon API架构演进与高并发实践 第一次收到用户反馈"favicon接口返回500错误"时,我们团队正在会议室讨论如何优化爬虫性能。那是个典型的周一早晨——咖啡还没喝完,警报先响了起来。这个看似简单的图标抓取服务&…...
港科夜闻 | 香港科大“长者护脑社区计划“为6,000名长者提供阿尔兹海默症早筛
关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科技大学3月23日宣布推出为期五年的 “长者护脑社区计划”。这项开创性计划以社区为本,旨在为香港基层长者提供阿尔兹海默症及轻度认知障碍的早期检测。香港科大将联同东华学院及十多间社福机构,…...
不止是打字机效果:手把手教你用SpannableStringBuilder打造Android富文本AI对话界面
超越基础文本渲染:用SpannableStringBuilder构建专业级AI对话界面 在移动应用开发中,AI对话界面的用户体验往往决定了产品的专业度。传统的TextView虽然能显示文字,但要实现类似DeepSeek等专业AI产品的交互效果,需要深入掌握Andro…...
经典算法实现:二分查找、全排列与子集生成
在算法学习中,二分查找、全排列、子集生成是非常基础且重要的内容。本文将结合 C 代码,详细讲解这三种经典算法的实现思路与核心逻辑,帮助大家理解算法的底层原理和代码落地方式。一、二分查找(Binary Search)二分查找…...
