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

文章目录

    • 题目
    • 方法一:递归加回溯(去重版)![在这里插入图片描述](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.hqwc.cn/news/100767.html

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

相关文章

Geopy 笔记:计算距离

1 介绍 Geopy使用测地线距离或大圆距离来计算两点之间的地理距离&#xff0c;其中默认使用测地线距离&#xff08;geopy.distance.distance&#xff09; 大圆距离&#xff08;great_circle&#xff09;使用地球的球形模型&#xff0c;&#xff0c;半径为6371.0087714150598 公…

Python爬虫:下载小红书无水印图片、视频

该代码只提供学习使用&#xff0c;该项目是基于https://github.com/JoeanAmier/XHS_Downloader的小改动 1.下载项目 git clone https://github.com/zhouayi/XHS_Downloader.git2.找到需要下载的文章的ID 写入main.py中 3.下载 python main.py最近很火的莲花楼为例<嘿嘿…

【C++】—— 单例模式详解

前言&#xff1a; 本期&#xff0c;我将要讲解的是有关C中常见的设计模式之单例模式的相关知识&#xff01;&#xff01; 目录 &#xff08;一&#xff09;设计模式的六⼤原则 &#xff08;二&#xff09;设计模式的分类 &#xff08;三&#xff09;单例模式 1、定义 2、…

Java复习-20-接口(3)- 代理设计模式

代理设计模式(Proxy) 功能&#xff1a;可以帮助用户将所有的开发注意力只集中在核心业务功能的处理上。 代理模式(Proxy Pattern)是一种结构性模式。代理模式为一个对象提供了一个替身&#xff0c;以控制对这个对象的访问。即通过代理对象访问目标目标对象&#xff0c;可以在目…

学单片机有前途吗?

学单片机有前途吗? 个人认为学习任何一门技术都比不学的强&#xff0c;针对学单片机有前途吗?那么比较对象当然就是在整个IT行业做对比。因此我们可以从职业前景、钱景、这几方面综合考量。 学单片机有前途吗?我觉得重要的一点就是是否适合职业生涯发展&#xff0c;总说程序…

一文讲解Linux内核内存管理架构

内存管理子系统可能是linux内核中最为复杂的一个子系统&#xff0c;其支持的功能需求众多&#xff0c;如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等&#xff0c;而且对性能也有很高的要求。本文从内存管理硬件架构、地址…

【API 管理】什么是 API 管理,为什么它很重要?

当今复杂的数字生态系统由许多相互关联的部分组成。API 作为看门人和连接器在其中发挥着关键作用——提供了许多最终用户甚至没有注意到的自动化机会和效率。 企业密切关注 API。它们对于应用程序、数据和各种客户交互的功能至关重要。 这使得 API 管理成为几乎每个部门的组织…

Fiddler安装与使用教程(2) —— 软测大玩家

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

idea 打 jar 包以及运行使用

1. 在 idea 右侧点击 maven 2. 点击Lifecycle——》clean 运行 3. 点击 Lifecycle——》compile 4. 点击 Lifecycle——》package 5. 打成的 jar 包可以在 target中找到 6. jar 包的名字和版本可以在 pom.xml文件中设置 7. 注意事项&#xff1a;打 jar 包的时候 test 里的 tes…

数据库 SQL高级查询语句:聚合查询,多表查询,连接查询

目录 创建学生表聚合查询聚合函数直接查询设置别名查询设置条件查询 常用的聚合函数 分组查询单个字段Group by报错分组查询多字段分组查询 多表查询直接查询重命名查询Students表新建一列CourseID 连接&#xff08;JOIN&#xff09;查询INNER JOINRIGHT JOIN, LEFT JOINFULL J…

《C++ Primer》第2章 变量(一)

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 2.1 基本内置类型&#xff08;P30&#xff09; C 定义的基本类型包括算术类型&#xff08;arithmetic type&#xff09;和空类型&#xff08;void&#xff09;&#xff0c;其中算术类型包括字符、整型、布尔…

使用 BERT 进行文本分类 (03/3)

一、说明 在使用BERT&#xff08;2&#xff09;进行文本分类时&#xff0c;我们讨论了什么是PyTorch以及如何预处理我们的数据&#xff0c;以便可以使用BERT模型对其进行分析。在这篇文章中&#xff0c;我将向您展示如何训练分类器并对其进行评估。 二、准备数据的又一个步骤 …