【LeetCode-中等题】90. 子集 II

news2025/1/19 11:37:12

文章目录

    • 题目
    • 方法一:递归加回溯(去重版)![在这里插入图片描述](https://img-blog.csdnimg.cn/abc4e8d0e3f940fcbdcb072acf80734e.png)

题目

在这里插入图片描述
本题nums数组存在重复元素,所以本题会涉及一个去重操作:
子集无需去重版本:【LeetCode-中等题】78. 子集
组合去重版: 【LeetCode-中等题】47. 全排列 II

本题最大的不同就在于组合去重版收获结果是在递归结束末尾,而本题去重收获结果是在递归开始的时候,并且去重操作的条件都是一样的,区别就在于for循环 子集是从startIndex开始的,而 组合都是从0开始的

两者的代码对比
在这里插入图片描述

方法一:递归加回溯(去重版)在这里插入图片描述

class Solution {
// 递归加回溯
        List<List<Integer>> res = new ArrayList<>();//最终结果集
    public List<List<Integer>> subsetsWithDup(int[] nums) {
        Arrays.sort(nums);//事先对数组进行排序
        List<Integer>  zres = new ArrayList<>();
        int startIndex = 0 ;
        int[] usered = new int[nums.length];//标记数组  0代表未使用   1 代表使用过了
        dfsback(nums,zres,startIndex,usered);
        return res;
    }
    public void  dfsback(int[] nums, List<Integer> zres,int startIndex,int[] usered){

        res.add(new ArrayList<>(zres));//收货结果

        if(startIndex >= nums.length) return ;

        for(int i = startIndex ; i<nums.length;i++){
            if(usered[i] == 1) continue;
            if(i > 0 &&nums[i-1] == nums[i] && usered[i-1] == 0) continue;//去重操作
            else{
                zres.add(nums[i]);
                usered[i] = 1;
                dfsback(nums,zres,i+1,usered);//下一层递归
                zres.remove(zres.size()-1);//回溯过程
                usered[i] = 0;
            }
        }
    }
}

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

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

相关文章

redis 高可用

Redis 高可用 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&#xff0c;除了保证提供…

不用入耳就有好音质,南卡OE Pro 0压开放式耳机

从15年第一次接触无线耳机到如今大概用过二十多款无线耳机&#xff0c;用过最多的厂牌就是南卡&#xff0c;包括主、被动降噪和骨传导等品系的数个型号&#xff0c;见证了南卡产品从早期成长探索阶段到如今设计、工艺日臻完善且形成品系&#xff0c;对南卡的技术、工艺和设计愈…

03 卷积操作图片

一、均值滤波 # 卷积操作 # 输入图片. input, 必须是4维tensor(图片数量, 图片高度, 图片的宽度, 图片的通道数) # filters, 卷积核, 必须是4维的tensor(卷积核的高度和宽度, 输入图片的通道数, 卷积核的个数) # strides, 步长, 卷积核在图片的各个维度上的移动步长, (1, 1, 1,…

28.考试

Description 小学期马上就要结束了&#xff0c;为了检验大家的学习成果&#xff0c;老师进行了一次考试。然而小徐前两周半都忙于练习篮球&#xff0c;几乎没有学习&#xff0c;因此考试时很可能做不完所有题目。 但小徐仍然想要拿到尽可能高的分数&#xff0c;因此在做题时需要…

ODrive移植keil(二)—— ODrive的程序架构

目录 一、移植说明二、支持的驱动板三、程序架构说明3.1、从main开始3.2、TIM8更新中断3.3、AD转换的专题说明 ODrive、VESC和SimpleFOC 教程链接汇总&#xff1a;请点击 一、移植说明 上一节教程的移植主要体现在硬件上&#xff0c;软件改动很小并且仍然为VScode版本&#xff…

手写Spring:第16章-给代理对象的属性设置值

文章目录 一、目标&#xff1a;给代理对象的属性设置值二、设计&#xff1a;给代理对象的属性设置值三、实现&#xff1a;给代理对象的属性设置值3.1 工程结构3.2 在Bean生命周期中创建代理对象类图3.3 判断CGLIB对象3.4 迁移创建AOP代理方法3.4.1 实例化感知对象处理3.4.2 扫描…

自动化测试:selenium(完结篇)

一、元素操作方法 方法&#xff1a; 1、.send_keys() # 输入方法 2、.click() # 点击方法 3、.clear() # 清空方法注意&#xff1a;在输入方法之前一定要清空操作&#xff01;&#xff01; # 导包 from time import sleep from selenium import webdriver# 实例化浏览器 d…

教你如何在三秒内,将PPT转换成翻页的电子书

​大家好&#xff01;今天教大家一个非常实用的技巧 瞬间将你的PPT变身为炫酷的翻页电子书&#xff0c;这个方法非常简单&#xff0c;只需要几个操作步骤就能完成&#xff0c;让我们一起来看看吧&#xff01; 在转换之前肯定是需要一款工具的&#xff0c;可以试试FLBOOK在线制…

论文笔记:Reinforcing Local Structure Perception for Monocular Depth Estimation

提出问题 混合数据集中深度范围的变化会导致网络的不稳定。虽然已经引入了一些仿射不变的损失函数&#xff0c;但现有的方法可能会导致次优的几何结构&#xff0c;如模糊的边界和细节。 思路 我们提出了一种新的像素级监督损失&#xff0c;称为 the windowed correlation re…

两个有序链表序列的交集

已知两个非降序链表序列S1与S2&#xff0c;设计函数构造出S1与S2的交集新链表S3。 输入格式: 输入分两行&#xff0c;分别在每行给出由若干个正整数构成的非降序序列&#xff0c;用−1表示序列的结尾&#xff08;−1不属于这个序列&#xff09;。数字用空格间隔。 输出格式:…

气传导耳机排名前十名,推荐几款性能表现不错的气传导耳机

​蓝牙耳机大家都很熟悉&#xff0c;如果更了解一些的朋友&#xff0c;一定也知道气传导耳机。气传导耳机最大的好处在于不入耳佩戴更舒适&#xff0c;户外使用时还能听到周围环境音&#xff0c;不会屏蔽汽车鸣笛声&#xff0c;使用更加安全。但也还有很多小伙伴不知道气传导耳…

css flex:1;详解,配合demo效果解答

前言 给设置了display&#xff1a;flex的子组件设置了flex&#xff1a;1&#xff1b;就能让他填满整个容器&#xff0c;如果有多个就平均 flex&#xff1a;1&#xff1b;是另外三个样式属性的简写&#xff0c;等同 flex-grow: 0; flex-shrink: 1; flex-basis: auto;我们就针…

idea插件推荐——Bito提高编码效率

Bito是一款在IntelliJ IDEA编辑器中的插件&#xff0c;Bito插件是由ChatGPT团队开发的&#xff0c;它是ChatGPT团队为了提高开发效率而开发的一款工具。Bito插件的强大之处在于它可以帮助开发人员更快地提交代码&#xff0c;同时还提供了一些有用的功能&#xff0c;如自动补全提…

it设备综合监控系统

IT综合监控系统是一系列IT管理产品的总称&#xff0c;具有功能齐全、应用便捷、解决方案齐全的产品&#xff0c;可一站式服务满足消费者的各种IT管理需求。该产品涵盖网络管理、服务器管理、存储系统、安全管理等方面&#xff0c;可为企业提供对整个IT系统的全方位监控和管理。…

【UIPickerView案例06-省市选择界面数据展示02-省市显示到Label上 Objective-C语言】

一、接下来,我要把城市、省、显示到下面的Label上 1.但是呢,我们现在能拿到它的Label吗, 是不是也是一样的,拖线啊 切换到三视图、选择ViewController.m文件 在类扩展里面, 左边这个呢,按住Control键,拖进来, Name:provinceLbl, 右边这个呢,按住Control键,拖进来…

G1 收集器【JVM调优】

文章目录 1. 分区收集器2. G1 收集器 1. 分区收集器 ① G1&#xff1a;分区算法&#xff0c;物理上不分代&#xff0c;逻辑分代。每次只回收快满了的几个小区域&#xff0c;对于较大的 Eden 区&#xff0c;回收效率还不算很高&#xff1b; ② ZGC&#xff1a;分页算法&#xff…

JS 一维数组 和 二维数组之间的相互转换

JS 一维数组 和 二维数组之间的相互转换 二维数组转一维数组一、需求二、分析1. 方法一&#xff08;ES5&#xff09;2. 方法二&#xff08;ES6&#xff09;3. 方法三&#xff08;ES6&#xff09;3. 方法四&#xff08;ES5&#xff09;4. 特殊说明&#xff1a;flat()方法会移除数…

基于Java+SpringBoot+Vue前后端分离电商应用系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

streamlit执行报错WARNING,重新安装碰到问题如何解决

streamlit执行报错WARNING&#xff0c;重新安装碰到问题如何解决 如何解决1、卸载已经安装的程序2、再次安装程序3、出现如下yinstaller 警告问题&#xff1a;4、又出现“which is not on PATH”警告。5、解决方案 发现在安装的时候有很多WARNING出现&#xff0c;但是没有但回事…

C# OpenVino Yolov8 Detect 目标检测

效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using static System.Net.Mime.MediaT…