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

【LeetCode-中等题】78. 子集

文章目录

    • 题目
    • 方法一:动态规划
    • 方法二:递归加回溯(关键----startIndex)

题目

在这里插入图片描述
注意:这里的nums数组里面的元素是各不相同的,所以不存在去重操作

方法一:动态规划

在这里插入图片描述
在这里插入图片描述

    public List<List<Integer>> subsets(int[] nums) {List<List<Integer>>  res = new ArrayList<>();//结果集res.add(new ArrayList<>());// 首先将空集加入解集中int n =  nums.length;List<Integer> zres = null;for(int i = 0 ; i < n ; i++){int size = res.size(); // 当前子集数for(int j = 0 ; j<size ;j++){zres = new ArrayList<>(res.get(j));// 拷贝所有子集zres.add(nums[i]);// 向拷贝的子集中加入当前数形成新的子集res.add(zres);// 向lists中加入新子集}}return res;}

方法二:递归加回溯(关键----startIndex)

参考讲解视频:回溯算法解决子集问题,树上节点都是目标集和! | LeetCode:78.子集

根据nums[1,2,3] 可以画出树图,收获的结果集为所有节点,并且根据startIndex 每次只能取startIndex 后面的数,这样可以避免取到【1,2】 【2,1】这样的集合 这两个集合其实是同一个子集,所以每次递归都让startIndex +1 让递归后的只能取startIndex 后面的数

并且注意回溯(在递归后删除递归前加入的数)
在这里插入图片描述

在这里插入图片描述

    List<List<Integer>> res = new ArrayList<>();//结果集public List<List<Integer>> subsets(int[] nums) {List<Integer> zres  = new ArrayList<>();int  startIndax = 0;//每一次取子结果的开始位置,第一次肯定从第一个位置开始dfsback(nums,startIndax,zres);return res;}//递归+回溯public void  dfsback(int[]nums,int startIndax, List<Integer> zres){res.add(new ArrayList<>(zres));//收获结果if(startIndax >= nums.length) return ;//这个条件有没有都没关系  因为如果startIndax >= nums.length  那么下面的for循环根本不会执行  自然会return掉for(int i = startIndax ; i<nums.length  ;i++){zres.add(nums[i]);//收获子结果集dfsback(nums,i + 1 ,zres);//往下递归zres.remove(zres.size()-1);//回溯,还原状态}}

相关文章:

【LeetCode-中等题】78. 子集

文章目录 题目方法一&#xff1a;动态规划方法二&#xff1a;递归加回溯(关键----startIndex) 题目 注意&#xff1a;这里的nums数组里面的元素是各不相同的&#xff0c;所以不存在去重操作 方法一&#xff1a;动态规划 public List<List<Integer>> subsets(int[]…...

学习设计模式之代理模式,但是宝可梦

前言 作者在准备秋招中&#xff0c;学习设计模式&#xff0c;做点小笔记&#xff0c;用宝可梦为场景举例&#xff0c;有错误欢迎指出。 代码同步更新到 github ,要是点个Star您就是我的神 目录 前言代理模式1.情景模拟1.1静态代理优点局限 1.2 动态代理 2.应用3.局限4.解决方…...

自学Python01-创建文件写入内容

此处省去安装和前言&#xff0c;需要两个东西 一个去下载安装python官方库 Welcome to Python.org 一个是编译器pycharm PyCharm 安装教程&#xff08;Windows&#xff09; | 菜鸟教程 PyCharm: the Python IDE for Professional Developers by JetBrains 第一节 练习print…...

Qt —UDP通信QUdpSocket 简介 +案例

1. UDP通信概述 UDP是无连接、不可靠、面向数据报&#xff08;datagram&#xff09;的协议&#xff0c;可以应用于对可靠性要求不高的场合。与TCP通信不同&#xff0c;UDP通信无需预先建立持久的socket连接&#xff0c;UDP每次发送数据报都需要指定目标地址和端口。 QUdpSocket…...

五大类注解和方法注解详解

五大类注解为Controller&#xff0c;Service&#xff0c;Repository&#xff0c;Configuration&#xff0c;Component,方法注解为Bean。 需要注意的是&#xff1a;Bean注解必须要在类注解修饰的类内才能正常使用。 一、与配置文件的关系 在spring原生项目中 如果你使用的spri…...

机器人中的数值优化(十)——线性共轭梯度法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…...

数据结构与算法之贪心动态规划

一&#xff1a;思考 1.某天早上公司领导找你解决一个问题&#xff0c;明天公司有N个同等级的会议需要使用同一个会议室&#xff0c;现在给你这个N个会议的开始和结束 时间&#xff0c;你怎么样安排才能使会议室最大利用&#xff1f;即安排最多场次的会议&#xff1f;电影的话 那…...

【网络编程】网络基础概念

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…...

连接虚拟机报错 Could not connect to ‘192.168.xxx.xxx‘ (port 22): Connection failed.

使用xshell连接虚拟机报错 Connecting to 192.168.204.129:22… Could not connect to ‘192.168.204.129’ (port 22): Connection failed. Type help’ to learn how to use Xshell prompt. 按网上的方法 是否能ping通内外网 ping www.baidu.com防火墙是否关闭 firewal…...

数学建模--Topsis评价方法的Python实现

目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 """ TOPSIS(综合评价方法):主要是根据根据各测评对象与理想目标的接近程度进行排序. 然后在现有研究对象中进行相对优劣评价。 其基本原理就是求解计算各评价对象与最优解和最劣解的距离…...

超越时间与人力的软件开发智慧:《人月神话》

目录 1、写在前面2、沟通&#xff01;沟通&#xff01;沟通&#xff01;3、“银弹论”4、“人月神话”不能成立的原因5、影响力6、图书推荐 1、写在前面 《人月神话》是由计算机科学家弗雷德里克布鲁克斯所著的一本经典著作&#xff0c;首次出版于1975年。这本书以一个个小故事…...

Java Stream 流对象(实用技巧)

目录 一、InputStream & OutputStream 1.1、InputStream 和 OutputStream 一般使用 1.2、特殊使用 1.2.1、如何表示文件读取完毕&#xff1f;&#xff08;DataInputStream&#xff09; 1.2.2、字符读取/文本数据读取&#xff08;Scanner&#xff09; 1.2.3、文件的随机…...

【用unity实现100个游戏之8】用Unity制作一个炸弹人游戏

文章目录 前言素材开始一、绘制地图二、玩家设置三、玩家移动四、玩家四方向动画运动切换 五、放置炸弹六、生成爆炸效果七、墙壁和可破坏障碍物的判断八、道具生成和效果九、玩家死亡十、简单的敌人AI十一、简单敌人AI十二、随机绘制地图十三、虚拟摇杆 最终效果待续源码完结 …...

简易版人脸识别qt opencv

1、配置文件.pro #------------------------------------------------- # # Project created by QtCreator 2023-09-05T19:00:36 # #-------------------------------------------------QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsTARGET 01_face TEMP…...

如何系统地学习 JavaScript?

前言 在学习JavaScript前需要先将Html和Css的相关知识点弄清楚&#xff0c;Js的很多操作是要结合Html和Css&#xff0c;下面我总结了Html、Css和Js的相关学习知识点供参考&#xff0c;希望对你有所帮助喔~ Html 文档学习 【HTML 】w3school教程 :https://www.w3school.com.…...

对称二叉树(Leetcode 101)

题目 101. 对称二叉树 思路 使用层序遍历&#xff0c;遍历当前层的节点时&#xff0c;如该节点的左&#xff08;右&#xff09;孩子为空&#xff0c;在list中添加null&#xff0c;否则加入左&#xff08;右&#xff09;孩子的值。每遍历完一层则对当前list进行判断&#xff0c…...

动手学深度学习(2)-3.5 图像分类数据集

文章目录 引言正文图像分类数据集主要包介绍主要流程具体代码练习 总结 引言 这里主要是看一下如何加载数据集&#xff0c;并且生成批次训练的数据。最大的收获是&#xff0c;知道了如何在训练阶段提高模型训练的性能 增加batch_size增加num_worker数据预加载 正文 图像分类…...

C标准输入与标准输出——stdin,stdout

&#x1f517; 《C语言趣味教程》&#x1f448; 猛戳订阅&#xff01;&#xff01;&#xff01; ​—— 热门专栏《维生素C语言》的重制版 —— &#x1f4ad; 写在前面&#xff1a;这是一套 C 语言趣味教学专栏&#xff0c;目前正在火热连载中&#xff0c;欢迎猛戳订阅&#…...

如何将home目录空间扩充到根目录下

目录 1、查看查看磁盘使用情况2、扩容思路3、卸载并删除/home4、扩大/root逻辑卷5、扩大/文件系统6、重建/home逻辑卷7、创建/home文件系统8、将新建的文件系统挂载到/home目录下9、恢复/home并删除备份10、再次查看看磁盘存储 系统&#xff1a;centos7.9 1、查看查看磁盘使用…...

Ceph PG Peering数据修复

ceph数据修复 当PG完成了Peering过程后&#xff0c;处于Active状态的PG就可以对外提供服务了。如果该PG的各个副本上有不一致的对象&#xff0c;就需要进行修复。 Ceph的修复过程有两种&#xff1a;Recovery和Backfill。 Recovery是仅依据PG日志中的缺失记录来修复不一致的对…...

乙巳马年·皇城大门春联生成终端W安全部署实践:网络配置与访问控制

乙巳马年皇城大门春联生成终端W安全部署实践&#xff1a;网络配置与访问控制 最近在星图GPU平台上部署了一个挺有意思的AI应用&#xff0c;叫“皇城大门春联生成终端W”。说白了&#xff0c;就是一个能根据你的要求&#xff0c;自动生成各种风格春联的AI模型。部署过程本身不难…...

用VSCode+PlatformIO给ESP32做个简易手表:基于LVGL和1.3寸屏的UI实战

基于LVGL的ESP32智能手表开发实战&#xff1a;从硬件驱动到UI设计全流程 在创客圈里&#xff0c;ESP32凭借其出色的性价比和丰富的功能接口&#xff0c;一直是物联网项目的热门选择。而当我们把目光投向更直观的人机交互领域时&#xff0c;LVGL&#xff08;Light and Versatile…...

初学Java之范型

范型包装类包装类的定义包装类的作用场景1&#xff1a;我想把数字放进列表里场景2&#xff1a;我想让方法返回"没有结果"场景3&#xff1a;我想用工具类处理数字场景4&#xff1a;泛型方法要求对象类型场景5&#xff1a;我想在同步代码块里用数字作为锁装箱与拆箱定义…...

小爱音响音乐服务:如何让智能音箱变身私人音乐管家?

小爱音响音乐服务&#xff1a;如何让智能音箱变身私人音乐管家&#xff1f; 【免费下载链接】xiaomusic 使用小爱音箱播放音乐&#xff0c;音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 你是否曾经想过&#xff0c;家里的小爱音…...

XHS-Downloader:构建高效采集流程的无水印内容批量管理方案

XHS-Downloader&#xff1a;构建高效采集流程的无水印内容批量管理方案 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、用户链接…...

保姆级教程:用PtitPrince的RainCloud函数,5步搞定分组数据可视化

5步精通RainCloud Plot&#xff1a;用PtitPrince实现专业级分组数据可视化 第一次看到同事用雨云图展示A/B测试结果时&#xff0c;我被这种"既见森林又见树木"的呈现方式震撼了——左侧的密度曲线如山脉般起伏&#xff0c;中间的箱线图标出关键分位点&#xff0c;右侧…...

Qwen3-8B快速体验报告:部署简单,中文理解能力确实强

Qwen3-8B快速体验报告&#xff1a;部署简单&#xff0c;中文理解能力确实强 1. 开箱即用的AI体验 最近在测试各种开源大模型时&#xff0c;我发现了Qwen3-8B这个宝藏模型。作为Qwen系列的最新成员&#xff0c;这个80亿参数的模型在中文理解和推理能力上表现突出&#xff0c;最…...

万象视界灵坛效果展示:血条式置信度进度条与‘同步率’动态分布图实录

万象视界灵坛效果展示&#xff1a;血条式置信度进度条与同步率动态分布图实录 1. 平台概览 万象视界灵坛&#xff08;Omni-Vision Sanctuary&#xff09;是一款基于OpenAI CLIP技术的高级多模态智能感知平台。不同于传统视觉识别工具的单调界面&#xff0c;它将复杂的"语…...

Vue3 模板引用 (ref):操作 DOM 与子组件实例 从入门到精通

前言 在 Vue 的数据驱动思想下&#xff0c;我们通常通过修改数据来驱动视图更新&#xff0c;避免直接操作 DOM。但在实际开发中&#xff0c;总会遇到一些非 DOM 不可的场景&#xff1a;比如获取输入框焦点、调用第三方库初始化画布、获取子组件的数据或方法等。 这时候&#xf…...

简单认识了解MSE

了解MSE 的应用场景在传统的网页开发中&#xff0c;前端处理视频的方式非常被动&#xff1a;给 video标签指定一个src&#xff0c;剩下的下载、缓冲、解码工作完全由浏览器底层“黑盒”接管&#xff0c;开发者几乎无法干预。MSE&#xff08;Media Source Extensions&#xff0c…...