java数据结构与算法刷题-----LeetCode90. 子集 II

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

文章目录

在这里插入图片描述

解题思路:时间复杂度O( n 2 ∗ n n^2*n n2n),空间复杂度O(n)
  1. 78题的衍生题,不同点在于,这道题会有重复元素。所以每个元素入集合时,需要判断
  2. 所以我们先排序,让其有序,方便我们判断重复元素
  3. 每个元素有两种状态,选和不选
  4. 每个元素默认不选,不选的时候,无需进行判断
  5. 要选择当前元素时,要进行判断,是否是重复元素(和前一个元素是否一样),如果是,就放弃当前元素的枚举,因为必然会重复
  6. 具体查看代码注释中的例子
🏆LeetCode78. 子集https://blog.csdn.net/grd_java/article/details/136646871
代码

在这里插入图片描述

class Solution {/**1       2                               2          获得子集不选    不选                            不选        []不选    不选                            前一个没选,而且和前一个一样,不选不选    前一个没选,和前一个不一样,选    不选        [2]不选    选                              选          [2,2]选      不选                            不选        [1]    选      不选                            前一个没选,和前一个一样,不选选      前一个选了,这个也选              不选        [1,2]选      选                              前一个选了,这个也选 [1,2,2]              */int[] nums;int len;List<List<Integer>> ans = new ArrayList<List<Integer>>();public List<List<Integer>> subsetsWithDup(int[] nums) {Arrays.sort(nums);//先保证有序this.nums = nums;this.len = nums.length;List<Integer> records = new ArrayList<Integer>();//保存当前子集backTracking(false,records,0);return ans;}//其中isPreChoose表示前一个元素是否选择加入集合,start是records的下标public void backTracking(boolean isPreChoose,List<Integer> records,int start){if(start == len) {//如果当前子集枚举完成就保存ans.add(new ArrayList<Integer>(records));}else{backTracking(false,records,start+1);//不选择当前元素进入集合//如果前一个元素没有被选中,并且当前元素确实有前一个元素时//如果当前元素和前一个元素一样,就会产生重复的集合。直接return.if(isPreChoose == false && start>0 && nums[start-1] == nums[start]) return;//选择当前元素进入集合records.add(nums[start]);backTracking(true,records,start+1);//不要忘了枚举后,将其去除,不要影响下一个子集的枚举records.remove(records.size()-1);}}
}

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

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

相关文章

[RoarCTF 2019]Easy Java -不会编程的崽

考察一下大家对java-web知识点的掌握 熟悉的登录界面让你想起了某位故人没有&#xff0c;哈哈&#xff0c;但是并非sql注入。一番基础尝试无果后&#xff0c;看看help吧 这个url让你想起某位故人了吗&#xff1f;对文件下载。但是似乎没有响应。改成post请求即可。 我看见pk了&…

STM32第七节:GPIO输入——按键检测(包含带参宏)

目录 前言 STM32第七节&#xff1a;GPIO输入——按键检测&#xff08;包含带参宏&#xff09; 带参宏 代码替换展示 定义带参宏 GPIO输入——按键检测 硬件部分 端口输入数据寄存器&#xff08;GPIOx_IDR&#xff09; 编写程序 配置以及编写bsp_key文件 main函数编程…

04_拖动文件渲染在页面中

新建一个文件夹&#xff0c;跟之前一样&#xff0c;在 Vscode 终端里输入 yarn create electron-app Drag。 在 index.html 添加以下代码&#xff0c;JS 文件夹和 render.js 都是新创建的&#xff1a; 首先&#xff0c;css 文件一般和 html 结合使用&#xff0c;相当于 html 是…

Linux字符设备驱动开发一

linux字符设备驱动 0 驱动介绍1 字符设备驱动1.1 字符设备相关概念和结构体1.2 实现简单的字符设备模块1.3 创建字符设备1.4 总结 应用程序调用文件系统的API(open、close、read、write) -> 文件系统根据访问的设备类型&#xff0c;调用对应设备的驱动API -> 驱动对硬件进…

用微信小程序开启桶装水订购业务

在当今的数字化时代&#xff0c;微信小程序已经成为一种非常流行的在线购物方式。对于桶装水配送行业&#xff0c;利用微信小程序可以提供更加方便快捷的服务&#xff0c;同时也可以提高门店的管理效率。本文将介绍如何制作一个微信小程序&#xff0c;用于支持桶装水配送门店多…

Flask开发类似jenkins构建自动化测试任务工具

1、自动化 某一天你入职了一家高大上的科技公司&#xff0c;开心的做着软件测试的工作&#xff0c;每天点点点&#xff0c;下班就走&#xff0c;晚上陪女朋友玩王者&#xff0c;生活很惬意。 但是美好时光一般不长&#xff0c;这种生活很快被女主管打破。为了提升公司测试效率…

模拟电子技术实验(三)

单选题 1.本实验的实验目的中&#xff0c;输出电阻测量是第几个目的&#xff1f; A. 1个。 B. 2个。 C. 3个。 D. 4个。 答案&#xff1a;C 评语&#xff1a;10分 单选题 2. 有一定输出功率的放大器的 “功率”下面理解正确的是&#xff1f; A. 能…

车辆路径优化问题(VRP)变体及数学模型

车辆路径优化问题变体及数学模型 一、旅行商问题&#xff08;Travelling salesman problem&#xff0c;TSP&#xff09;TSP问题数学模型TSP问题求解 二、车辆路径问题&#xff08;Vehicle Routing Problem&#xff0c;VRP&#xff09;三、带容量约束的车辆路径优化问题&#xf…

【Web】浅聊XStream反序列化本源之恶意动态代理注入

目录 简介 原理 复现 具体分析之前 我们反序列化了个什么&#xff1f; XStream反序列化的朴素通识 具体分析 第一步&#xff1a;unmarshal解组 第二步&#xff1a;readClassType获取动态代理类的Class对象 第三步&#xff1a;调用convertAnother对动态代理类进行实例…

自适应窗口图片轮播HTML代码

自适应窗口图片轮播HTML代码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 代码下载地址 自适应窗口图片轮播HTML代码

Python之requests实现github模拟登录

文章目录 github 模拟登录前言模拟登录流程抓包操作查看登录表单的内容登录操作 模拟登录操作在 main函数的调用获得 auth_token调用/session接口登录处理检测登录是否成功 总结&#xff1a; github 模拟登录 前言 前面学习了requests模块的基础学习后&#xff0c;接下来做一个…

Vulnhub - DC-1

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog DC-1 靶机下载地址&#xff1a;DC: 1 ~ VulnHub 0x01 信息收集 Nmap扫描目标主机&#xff0c;发现开…