当前位置: 首页 > news >正文

算法刷刷刷| 回溯篇| 子集问题大集合

78.子集

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
示例 1:
输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

import java.util.ArrayList;
import java.util.List;class Solution {private List<Integer> path = new ArrayList<>();private List<List<Integer>> res = new ArrayList<>();public List<List<Integer>> subsets(int[] nums) {backTrace(nums, 0);return res;}private void backTrace(int[] nums, int start) {res.add(new ArrayList<>(path));if (start >= nums.length) {return;}for (int i = start; i < nums.length; i++) {path.add(nums[i]);backTrace(nums, i + 1);path.remove(path.size() - 1);}}
}

90.子集II

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。
示例 1:
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;class Solution {private List<Integer> path = new ArrayList<>();private List<List<Integer>> res = new ArrayList<>();public List<List<Integer>> subsetsWithDup(int[] nums) {Arrays.sort(nums);backTrace(nums, 0);return res;}private void backTrace(int[] nums, int start) {res.add(new ArrayList<>(path));if (start == nums.length) {return;}for (int i = start; i < nums.length; i++) {if (i > start && nums[i] == nums[i - 1]) {continue;}path.add(nums[i]);backTrace(nums, i + 1);path.remove(path.size() - 1);}}
}

去重需要先对数组进行排序,可别忘记了!!!
这里要求有重复元素的集合,同一个树层上的元素不能重复,同一个树枝(上下)上可以取重复

491.递增子序列

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。
数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。
示例 1:
输入:nums = [4,6,7,7]
输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]
示例 2:
输入:nums = [4,4,3,2,1]
输出:[[4,4]]

class Solution {public List<List<Integer>> findSubsequences(int[] nums) {backTracing(nums, 0);return res;}private List<Integer> path = new ArrayList<>();private List<List<Integer>> res = new ArrayList<>();private void backTracing(int[] nums, int start) {if (path.size() > 1) {res.add(new ArrayList<>(path));}if (start == nums.length) {return;}Map<Integer, Integer> map = new TreeMap<>();for (int i = start; i < nums.length; i++) {if ((path.size() > 0 && nums[i] < path.get(path.size() - 1)) || map.containsKey(nums[i])) {continue;}map.put(nums[i], 0);path.add(nums[i]);backTracing(nums, i + 1);path.remove(path.size() - 1);}}
}

注意这道题不可以进行排序,子集问题又需要去重,以前的排列之后判断是不是和前一个相同的逻辑不适用了,这里每层用一个map记录数组中的元素是不是出现过,出现过的不再使用,并且要保证递增序列,在每个元素放进path的时候和path中的最后一个元素比较,小就不再进行递归了,这一枝截断!

相关文章:

算法刷刷刷| 回溯篇| 子集问题大集合

78.子集 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2],[1…...

合并两个有序数组-力扣88-java

一、题目描述给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。注意&#xff1a;最终&#xff0c;合…...

2022「大厂可观测」重磅回顾,12场直播,15位技术大咖洞见可观测

回首2022年&#xff0c;注定是意义非凡的一年。新冠疫情继续肆虐全球&#xff0c;中国疫情全面放开&#xff0c;神舟十四号与神舟十五号成功会师&#xff0c;俄乌冲突带来深远影响&#xff0c;阿根廷再次问鼎世界杯梅西圆梦&#xff0c;英国女王逝世......件件事都备受关注。 …...

CMMI-配置管理(CM)

一、概述配置管理&#xff08;Configuration Management&#xff0c; CM&#xff09;的目的在于使用配置识别、配置控制、配置状态记录与报告以及配置审计&#xff0c;来建立并维护工作产品的完整性。1、简介“配置管理”过程域涉及以下活动&#xff1a;• 识别所选工作产品的配…...

网络编程套接字Socket

一.什么是网络编程网络编程&#xff0c;指网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信&#xff08;或称为网络数据传输&#xff09;。二.为什么要实现网络编程我们通过网络编程可以在网络中获取资源&#xff0c;实质是通过网络&#xff0c;获…...

Linux进程概念(二)

进程状态1.阻塞和挂起2.R运行状态和S睡眠状态3.T停止状态4.X死亡状态和Z僵尸状态&#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f680;&#x1f680;系列专栏&#xff1a;【Linux的学习】 &#x1f4dd;&#x1f4dd;本…...

墨天轮【第二届数据库掌门人论坛】圆满收官 | 含嘉宾精彩观点回顾

2月10日上午&#xff0c;墨天轮【2023春季发布会暨第二届数据库掌门人论坛】盛大开启&#xff0c;本次活动的主题为“新征程&#xff0c;向未来”&#xff0c;共包含2022年度中国数据库颁奖盛典、2022年度行业发展报告发布以及第二届数据库掌门人论坛三项议程。华为云数据库服务…...

Redis之集群搭建

redis的集群模式简介&#xff1a; redis的集群模式中可以实现多个节点同时提供写操作&#xff0c;redis集群模式采用无中心结构&#xff0c;每个节点都保存数据&#xff0c;节点之间互相连接从而知道整个集群状态。 集群搭建步骤如下 (一台服务器模拟多台服务器) 1.创建6个配置…...

31-Golang中的二维数组

二维数组的使用方式 使用方式一&#xff1a;先声明/定义再赋值 1.语法&#xff1a;var数组名 [大小] [大小]类型2.比如&#xff1a;var arr [2] [3]int,再赋值 package main import ("fmt" )func main() {//定义/声明数组var arr [4][6]int//赋初值arr[1][2] 1ar…...

<<Java开发环境配置>>6-SQLyog安装教程

一.SQLyog简介: SQLyog 是一个快速而简洁的图形化管理MySQL数据库的工具&#xff0c;它能够在任何地点有效地管理你的数据库&#xff0c;由业界著名的Webyog公司出品。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。 二.SQLyog下载: 下载地址…...

MySQL 中的 distinct 和 group by 哪个效率更高

先说大致的结论&#xff08;完整结论在文末&#xff09;&#xff1a;在语义相同&#xff0c;有索引的情况下&#xff1a;group by和distinct都能使用索引&#xff0c;效率相同。在语义相同&#xff0c;无索引的情况下&#xff1a;distinct效率高于group by。原因是distinct 和 …...

计算机相关专业毕业论文选题推荐

计算机科学以下是我推荐的20个计算机科学专业的本科论文选题&#xff1a;基于机器学习的推荐算法研究与实现基于区块链技术的数字身份认证方案设计与实现基于深度学习的图像识别技术研究与应用基于虚拟现实技术的教育培训平台设计与实现基于物联网技术的智能家居系统研究与开发…...

网络编程套接字之TCP

文章目录一、TCP流套接字编程ServerSocketSocketTCP长短连接二、TCP回显服务器客户端服务器客户端并发服务器UDP与TCP一、TCP流套接字编程 我们来一起学习一下TCP socket api的使用&#xff0c;这个api与我们之前学习的IO流操作紧密相关&#xff0c;如果对IO流还不太熟悉的&am…...

网络与串口调试工具TCPCOM

TCPCOM&#xff0c;网络与串口二合一调试助手&#xff0c;将网络调试助手与串口调试助手合二为一&#xff0c;绿色软件&#xff0c;简单高效。【软件特色】 1. 支持中英文双语言&#xff0c;自动根据操作系统环境选择系统语言类型&#xff1b; 2. 支持ASCII/Hex发送,发送和接收…...

数据库常用命令

文章目录1. 数据库操作命令1.进入数据库2.查看数据库列表信息3.查看数据库中的数据表信息2.SQL语句命令1. 创建数据表2. 基本查询语句3. SQL排序4. SQL分组统计5. 分页查询6. 多表查询7.自关联查询8.子查询1. 数据库操作命令 1.进入数据库 mysql -uroot -p2.查看数据库列表信…...

PTA复习

函数 6-1 学生类的构造与析构 #include<bits/stdc.h> using namespace std; class Student {int num;string name;char sex; public:Student(int n,string nam,char s):num(n),name(nam),sex(s){cout<<"Constructor called."<<endl;}void display…...

TypeScript 学习之接口

接口&#xff1a;对值所具有的结构进行类型检查&#xff0c;称为“鸭式变型法”或“结构性子类型化” 基本使用 interface LabelledValue {label: string; }function printLabel(labelledObj: LabelledValue) {console.log(labelledObj.label); }let myObj {size: 10, label:…...

原码反码补码

在计算机中&#xff0c;负数都是以补码的形式存放的&#xff0c; 正数的原码、反码、补码完全一致。 原码&#xff1a;指的是正数的二进制或负数的二进制&#xff0c; 负数的二进制&#xff08;原码&#xff09;&#xff0c;其实就是在正数的二进制的最高位前面加一个符号位 1。…...

大数据选股智能推荐系统V1.0-1

很长时间没有发布博客了&#xff0c;这段时间个人确实有点忙。另外一方面在这段时间我也没有闲着。自己研发了一套大数据选股的智能推荐系统。废话不说&#xff0c;我们先来看这套系统&#xff1a;登录页面&#xff1a;&#xff08;技术点&#xff1a;验证码的生成&#xff09;…...

调研生成GIF表情包之路

调研阶段 gifshot.js合成GIF 可以从媒体流、视频或图像创建动画 GIF 的 JavaScript 库。 csdn地址&#xff1a;https://blog.csdn.net/qq_16494241/article/details/125717405 分解GIF图片、合成GIF图片 两步走&#xff1a; 1、分解GIF图片 libgif-js&#xff1a;JavaScrip…...

故障发现滞后、处置不及时引发的业务中断与数据风险,超自动化巡检帮您解决

在数字化业务高度依赖IT系统的今天&#xff0c;每一次故障发现滞后、每一次处置不及时&#xff0c;都可能引发连锁反应——从关键业务中断到核心数据泄露&#xff0c;损失往往远超预期。传统运维模式在应对现代复杂系统时已显疲态&#xff0c;而超自动化巡检正成为破解这一困局…...

某物APP的newSign与X-Auth-Token逆向分析与实战破解

1. 逆向分析前的环境准备 搞逆向分析的第一步永远是搭建好调试环境。这次我们用的测试机是Pixel 2&#xff0c;系统版本Android 9&#xff0c;目标APP版本v4.82.0。刚开始用Charles抓包时发现什么都抓不到&#xff0c;这其实是APP启用了防抓包机制——具体来说就是设置了Proxy.…...

5分钟精通:开源内容解锁工具Bypass Paywalls Clean完全指南

5分钟精通&#xff1a;开源内容解锁工具Bypass Paywalls Clean完全指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代&#xff0c;学术文献、专业报道和深度分…...

ViGEmBus虚拟手柄驱动:Windows内核级游戏控制器模拟核心技术解析与应用指南

ViGEmBus虚拟手柄驱动&#xff1a;Windows内核级游戏控制器模拟核心技术解析与应用指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus作为Windows…...

基于LSTM的短期电力负荷预测研究

【负荷预测】基于LSTM短期负荷预测&#xff0c;可考虑需求响应 短期电力负荷预测在电力系统的调度、生产和规划中起着重要的作用&#xff0c;精准的负荷预测有利于决策者做出正确决策计划以及有利于电力系统的稳定运行。 多个售电主体的市场竞争带来了电价的波动&#xff0c;以…...

DAC高速线缆市场洞察:预计到2032年将增长至180.8亿元

据恒州诚思调研统计&#xff0c;2025年全球DAC高速线缆市场规模达66.60亿元&#xff0c;预计到2032年将增长至180.8亿元&#xff0c;2026-2032年复合增长率&#xff08;CAGR&#xff09;为14.7%。作为数据中心短距离互连的核心组件&#xff0c;DAC高速线缆凭借其低延迟、高可靠…...

Venera:5大革新功能打造无缝全平台漫画阅读体验

Venera&#xff1a;5大革新功能打造无缝全平台漫画阅读体验 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera Venera 是一款开源跨平台漫画应用&#xff0c;专为漫画爱好者打造全设备同步的阅读解决方案。无论你使用 Windows、…...

Maxwell16.0实战:如何用实验电流数据搞定电机仿真(附.tab文件制作技巧)

Maxwell16.0实战&#xff1a;实验电流数据驱动电机仿真的全流程解析 电机仿真作为现代工业设计的重要环节&#xff0c;其准确性直接影响产品性能评估。而将实测电流数据融入仿真流程&#xff0c;往往是工程师突破"理想模型"局限的关键一步。本文将系统性地拆解从实验…...

2026微软SDE LeetCode高频题:208道,按频度排序,含备考建议

2026微软SDE LeetCode高频题&#xff1a;208道&#xff0c;按频度排序&#xff0c;含备考建议 微软SDE的LeetCode面试题&#xff0c;第一名不是反转链表&#xff0c;不是LRU缓存&#xff0c;而是—— 215. 数组中的第K个最大元素&#xff0c;出现14次。 我整理了基于真实面经…...

告别Makefile!用Zig 0.10.0自带的构建系统搞定ARM裸机开发(附完整项目配置)

用Zig构建系统重塑ARM裸机开发&#xff1a;告别Makefile的终极指南 当你在凌晨三点盯着第47个Makefile规则调试链接器错误时&#xff0c;是否想过——嵌入式开发必须这么痛苦吗&#xff1f;Zig 0.10.0带来的不仅是一门新语言&#xff0c;更是一套彻底革新裸机开发工作流的构建系…...