90. 子集 II(力扣LeetCode)
文章目录
- 90. 子集 II
- 题目描述
- 回溯算法
90. 子集 II
题目描述
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。
示例 1:
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]
示例 2:
输入:nums = [0]
输出:[[],[0]]
提示:
- 1 <= nums.length <= 10
- -10 <= nums[i] <= 10
回溯算法
class Solution {
public:// 主函数,接受一个整数数组作为输入,返回该数组所有可能的不重复子集vector<vector<int>> subsetsWithDup(vector<int>& nums) {sort(nums.begin(), nums.end()); // 先对数组进行排序,以便处理重复元素vector<bool> used(nums.size(), false); // 记录每个元素是否被使用,避免重复子集backstracking(nums, 0, used); // 开始回溯算法return result; // 返回所有找到的子集}private:vector<vector<int>> result; // 用于存储所有可能的子集vector<int> path; // 用于存储当前路径(即当前构造的子集)// 回溯函数void backstracking(vector<int>& nums, int start, vector<bool> used) {result.push_back(path); // 将当前路径添加到结果集// 遍历数组中的每个元素for (int i = start; i < nums.size(); i++) {// 如果当前元素和前一个元素相同,并且前一个元素没有被使用过// 则跳过当前元素,避免产生重复的子集if (i > 0 && nums[i] == nums[i - 1] && !used[i - 1]) {continue;}path.push_back(nums[i]); // 将当前元素加入到路径used[i] = true; // 标记当前元素为已使用backstracking(nums, i + 1, used); // 递归调用,继续向路径添加元素path.pop_back(); // 回溯,移除路径中的当前元素used[i] = false; // 取消当前元素的已使用标记}}
};
这段代码实现了一个基于回溯算法的解决方案来生成所有可能的子集,包括处理重复元素以避免重复子集的情况。首先,它通过排序输入数组nums来处理可能的重复元素。used数组用来跟踪每个元素的使用情况,确保在生成子集时不会因为重复元素而产生重复的子集。
在backstracking方法内部,每次调用都会将当前path加入到结果集result中,然后通过一个循环遍历nums数组的剩余部分。如果当前元素与前一个元素相同并且前一个元素没被使用过,循环会跳过当前元素,通过这种方式来避免生成重复的子集。
每次递归调用backstracking都会向path中添加一个新元素,并且更新used数组来反映这个元素已经被使用过了。一旦完成了对当前元素的处理,代码会通过path.pop_back()和used[i] = false来回溯,即移除当前元素并标记为未使用,以便于下次循环可以使用该元素的下一个元素。
相关文章:
90. 子集 II(力扣LeetCode)
文章目录 90. 子集 II题目描述回溯算法 90. 子集 II 题目描述 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 …...
202435读书笔记|《半小时漫画中国史》——读点经济学与历史,生活更美好,趣味烧脑土地制度、商鞅变法、华丽丽的丝绸之路这里都有
202435读书笔记|《半小时漫画中国史》——读点经济学与历史,生活更美好,趣味烧脑土地制度、商鞅变法、华丽丽的丝绸之路这里都有 1. 土地政策、度量衡及税收2. 商鞅变法3. 西汉经济4. 西汉盐铁大辩论5. 西汉丝绸之路 《半小时漫画中国史:经济…...
2023下半年主品牌锋芒依旧,江南布衣打破既定天花板?
在过去的2023年里,服装板块令人意外的领涨消费大盘,国家统计局数据显示,上半年服装零售额同比增长12.8%,远超商品零售大盘的增速6.8%。 整体表现强劲的同时,“局部”表现是否也尽如人意。近日,作为时尚服装…...
Gitlab: PHP项目CI/CD实践
目录 1 说明 2 CI/CD 2.1 部署方式一:增量部署 2.1.1 目标服务器准备 2.2.2 Gitlab及Envoy脚本 2.2 部署方式二:镜像构建与部署 2.2.1 推送到私有化容器仓库 准备工作 脚本 要点 2.2.2 推送到hub.docker.com 准备工作 脚本 3 参考&#x…...
c语言游戏实战(10):坤坤的篮球回避秀
前言: 这款简易版的球球大作战是博主耗时两天半完成的,玩家需要控制坤坤在游戏界面上移动,来躲避游戏界面上方不断掉下来的篮球。本游戏使用C语言和easyx图形库编写,旨在帮助初学者了解游戏开发的基本概念和技巧。 在开始编写代…...
初学arp欺骗
首先准备一台靶机这里用虚拟机的win10 已知网关与ip地址(怕误伤) 现在返回kali从头开始 首先探测自己的网关 然后扫内网存活的ip 发现有3台 用nmap扫一下是哪几台 成功发现我们虚拟机的ip 现在虚拟机可以正常访问网络 接下来直接开梭 ip网关 返回虚拟机…...
ftp几个常见错误问题及解决办法
1、无法上传网页,FTP故障-提示“无法连接服务器”错误。 问题出现原因:FTP客户端程序设置问题,客户上网线路问题,ftp服务器端问题。 处理方法:建议客户使用CUTPFTP软件来上传客户的网页,在“F…...
鸿蒙App开发新思路:小程序转App
国家与国家之间错综复杂,在谷歌的安卓操作系统“断供”后,鸿蒙系统的市场化&独立化的道路便显而易见了。 2024年1月18日,华为宣布,不再兼容安卓的“纯血鸿蒙”--HarmonyOS NEXT鸿蒙星河版最终面世,并与2024年Q4正…...
C++17之std::invoke: 使用和原理探究(全)
C进阶专栏:http://t.csdnimg.cn/5mV9r 目录 1.概述 2.辅助类 3.原理分析 4.总结 1.概述 在之前的 C 版本中,要调用不同类型的可调用对象,需要使用不同的语法,例如使用函数调用运算符 () 来调用函数或函数指针,使用…...
shadertoy 游戏《来自星尘》摇杆复刻
正确的做法应该是上 noise 而不是叠加 sin 波,不过如果不想麻烦的话叠波还是一个不错的选择:整体效果如下,已经非常形似 直接上链接:Shader - Shadertoy BETA float radiusScale 0.9; float variation(vec2 v1, vec2 v2, float …...
获取PDF中的布局信息——如何获取段落
PDF解析是极其复杂的问题。不可能靠一个工具解决全部问题,尤其是五花八门,格式不统一的PDF文件。除非有钞能力。如果没有那就看看可以分为哪些问题。 提取文本内容,提取表格内容,提取图片。我认为这些应该是分开做的事情。python有…...
Laya2.13.3在Web条件下使用键盘控制相机移动
需求:在Laya开发时,常常没法移动相机来观察场内的环境,故制作一个移动相机的脚本来是实现此功能,目前先使用键盘后续会添加鼠标控制移动旋转等功能。 onEnable(){this.camera new Laya.Camera(0, 0.1, 100);this._tempVector3 n…...
centos系统服务器在Jenkins执行playwright UI自动化测试框架
centos系统服务器在Jenkins执行playwright UI自动化测试框架 1. centos7.9系统中安装playwright环境报错 playwright/driver/node: /lib64/libc.so.6: version `GLIBC_2.25 not found经过查找资料,playwright 仅支持Ubuntu系统,其他的Linux服务器系统不支持,为此采用docke…...
boost.redis崩溃的解决方法
使用boost.redis的协程一定要co_spawn在strand对象中。 正确的用法: boost::asio::co_spawn(boost::dasio::make_strand(ioc),XXXCoroutine(),boost::asio::detached ); 错误的用法: boost::asio::co_spawn(ioc,XXXCoroutine(),boost::asio::detache…...
蓝桥杯——123
123 二分等差数列求和前缀和数组 题目分析 连续一段的和我们想到了前缀和,但是这里的l和r的范围为1e12,明显不能用O(n)的时间复杂度去求前缀和。那么我们开始观察序列的特点,可以按照等差数列对序列进行分块。如上图,在求前10个…...
嵌入式基础知识-信号量,PV原语与前趋图
本篇来介绍信号量与PV原语的一些知识,并介绍其在前趋图上的应用分析。本篇的知识属于操作系统部分的通用知识,在嵌入式软件开发中,同样会用到这些知识。 1 信号量 信号量是最早出现的用来解决进程同步与互斥问题的机制(可以把信…...
代码遗产:探索祖传代码的历史、挑战与现代融合艺术
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…...
Vue3:用vite创建Vue3项目
一、简介 vite是新一代前端构建工具,官网地址:https://vitejs.cn vite的优势如下: 轻量快速的热重载(HMR),能实现极速的服务启动。对 TypeScript、JSX、CSS 等支持开箱即用。真正的按需编译,不…...
STM32 (2)
1.stm32编程模型 将C语言程序烧录到芯片中会存储在单片机的flsah存储器中,给芯片上电后,Flash中的程序会逐条进入到CPU中去执行,进而CPU去控制各种模块(即外设)去实现各种功能。 2.寄存器和寄存器编程 CPU通过控制其…...
docker部署nginx+反向代理配置/代理宿主机网段服务器
1、安装docker,并运行 2、拉取nginx镜像 docker pull nginx3、运行nginx容器,将文件拷贝至本地,并将nginx容器删除 #运行nginx容器 docker run -id --name mynginx -p 8080:80 nginx#将配置文件从容器内拷贝至本地 docker cp 容器ID:/et…...
信号量实战:多进程协同操作有限缓冲区的伪代码精解
1. 信号量机制与生产者-消费者模型 想象一下餐厅后厨的场景:厨师(生产者)不断制作菜品,服务员(消费者)将菜品端给顾客。如果厨师做菜太快,服务员来不及端走,菜品就会堆积;…...
2026届毕业生推荐的六大降重复率平台解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要是为了切实有效地去降低文本所具备的AIGC也就是人工智能生成内容的特征,那就建…...
[具身智能-228]:OpenCV的主要功能
OpenCV(Open Source Computer Vision Library)被誉为计算机视觉领域的“瑞士军刀”。它是一个基于 BSD 许可发行的开源库,提供了超过 2500 个优化算法,涵盖了从底层像素处理到高层视觉理解的完整技术链路。结合最新的技术资料&…...
打造行业大模型更好还是做垂直 Agent 更好
打造行业大模型更好还是做垂直 Agent 更好?从小学生的糖果王国管理谈起,拆解AI落地的终极选择题关键词:行业大模型、垂直 Agent、AI落地、通用 vs 垂直、能力边界、ROI模型、端云协同、大模型Agent架构摘要:这篇文章从「小学生管理…...
51单片机(一) --- 入门
一、核心基础概念铺垫 在接触 51 单片机实操前,先理清 CPU、处理器架构、位运算等基础概念,这是理解单片机工作原理的核心前提。 1.1 CPU 与处理器主频 CPU(Central Processing Unit) 即中央处理器,是所有计算设备的…...
2025最权威的五大AI辅助论文方案实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于借助人工智能去生成文本之际,原始输出常常带有显著的模式化印迹。为达成“降AI…...
ALOHA开源双臂机器人系统全攻略:从核心价值到深度实践
ALOHA开源双臂机器人系统全攻略:从核心价值到深度实践 【免费下载链接】aloha 项目地址: https://gitcode.com/gh_mirrors/al/aloha 一、探索ALOHA:重新定义低成本双手机器人开发 什么是ALOHA系统 ALOHA(A Low-cost Open-source Ha…...
模电实战-比较器正反馈接法的窗口电压设计
1. 比较器正反馈接法的核心价值 我第一次接触比较器正反馈接法是在设计工业传感器信号调理电路时。当时遇到一个头疼的问题:环境噪声导致比较器在临界电压附近频繁误触发,整个系统像得了"癫痫"一样不停抖动。直到尝试了正反馈接法,…...
Qt数据库连接实战:QSqlDatabase从配置到优化的完整指南
Qt数据库连接实战:QSqlDatabase从配置到优化的完整指南 在当今数据驱动的应用开发中,数据库连接作为系统与数据之间的桥梁,其稳定性和性能直接影响着用户体验。对于Qt开发者而言,QSqlDatabase作为连接各类数据库的核心类ÿ…...
MAA助手跨平台部署与自动化实践指南
MAA助手跨平台部署与自动化实践指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.com/GitHub_Trending/ma/…...
