代码随想录算法训练营Day21| 93.复原IP地址、78.子集、90.子集||

LeetCode 93 复原 IP 地址

在这里插入图片描述
本题思路:最重要的是想到一个收集结果的条件,也就是终止条件。

  1. 当 . 的个数达到三个时候,并且,判断最后剩余的是否符合要求,如果符合,说明整个ip地址可以,就加入到结果集中
  2. 每次分割的时候,都要判断一次是否满足合法条件,如果合法的进行下一层递归,不合法,就直接进入一个循环。
  3. 单层循环完,要记得回溯!
class Solution {List<String> res = new ArrayList();public List<String> restoreIpAddresses(String s) {backtracking(s,0,0);return res;}public void backtracking(String s, int startIndex, int postnum){if(postnum == 3){if(isValid(s,startIndex,s.length()-1)){res.add(s);return;}}for(int i = startIndex; i < s.length(); i++){if(isValid(s,startIndex,i)){s = s.substring(0,i+1) + '.' + s.substring(i+1);postnum++;backtracking(s,i+2,postnum);postnum--;s = s.substring(0,i+1) + s.substring(i+2);}else{break;}}}// 检查字符串是否有效public boolean isValid(String s, int start,int end){if(start > end){return false;}if(s.charAt(start) == '0' && start != end){return false;}int sum = 0;for(int i = start; i <= end; i++){if(s.charAt(i) > '9' || s.charAt(i) < '0'){return false;}sum = sum * 10 + (s.charAt(i) - '0');if(sum > 255){return false;}}return true;}
}

LeetCode 78 子集

在这里插入图片描述
本题思路:和组合问题不同的是, 本题没有个数要求,收集的结果集,所以只要遍历到,就要收集。那么就容易很多。

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

LeetCode 90 子集||

在这里插入图片描述
本题思路:本题涉及到一个去重操作
去重操作的话,要在树层去重,树枝上不能去重。具体代码思路如下

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

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

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

相关文章

【数据结构】C语言实现共享栈

共享栈的C语言实现 导言一、共享栈1.1 共享栈的初始化1.2 共享栈的判空1.3 共享栈的入栈1.3.1 空指针1.3.2 满栈1.3.3 入栈空间错误1.3.4 正常入栈1.3.5 小结 1.4 共享栈的查找1.5 共享栈的出栈1.6 共享栈的销毁 二、共享栈的实现演示结语 导言 大家好&#xff0c;很高兴又和大…

SpringBoot ElasticSearch 聚合统计

SpringBoot ElasticSearch 聚合统计 在SpringData Elasticsearch中&#xff0c;聚合统计的原理主要依赖于Elasticsearch本身的聚合框架。Elasticsearch提供了强大的聚合功能&#xff0c;使得你可以对文档进行各种计算和统计&#xff0c;从而得到有关数据集的有用信息。 Elasti…

Linux文件隐藏属性及chattr和lsattr命令

chattr命令 [rootstudy ~]# chattr [-] [ASacdistu] 文件或目录名称 选项与参数&#xff1a; &#xff1a;增加某一个特殊参数&#xff0c;其他原本存在参数则不动。- &#xff1a;移除某一个特殊参数&#xff0c;其他原本存在参数则不动。 &#xff1a;设置等于&#xff0c;且…

腾讯云主机价格表和优惠活动汇总(2024年更新)

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

检索增强生成RAG

文章目录 RAG解释混合检索重排序Rerank为什么需要RerankHNSW带来的随机性问题 当前大模型处理长输入的水平依然不够大模型如何处理长输入&#xff1f;重要信息位置为什么会影响大模型的效果LangChain的解决方案-检索后重新排序文档 召回模式N选1召回模式多路召回模式 摘要 在RA…

记录一次git merge后发现有些文件不对的问题,排查过程

分支进行merge&#xff08;A merge到B&#xff09;之后&#xff0c;发现string.xml中有些字段的值没有merge过来&#xff0c;一开始还以为自己是自己merge错误&#xff0c;检查了一遍自己的merge操作没有问题。 那为啥没有merge过来呢&#xff1f;有一种可能是&#xff0c;merg…

CMake把静态库编译进入动态库

CMake把静态库编译进入动态库 当尝试把静态库编译进入动态库时(类似如下的指令) add_library(testShare SHARED ./include/test.h)target_link_libraries(test_share pthread libtestStatic.a)发生如下报错 can not be used when making a shared object; recompile with -f…

排序——计数排序

文章目录 概念思路绝对映射&#xff1a;相对映射 代码实现特性结果演示 概念 计数排序是一个非基于比较的排序算法&#xff0c;该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时&#xff0c;它的复杂度为Ο(nk)&#xff08;其中k是整数的范围…

内网穿透[让你在家里也能榨干学校的服务器]Yep!

内网穿透 问题&#xff1a;什么是内网穿透&#xff0c;内网穿透的作用是什么&#xff1f; 前提&#xff01;&#xff01;&#xff01;&#xff01;你得拥有超级管理员的权限&#xff0c;比如root&#xff0c;不然后面的一切免提&#xff01; 应用场景如下&#xff1a;比如你…

中科院国产多语言大模型-YAYI2开源!家族AI应用场景全覆盖!

项目简介 YAYI 2 是中科闻歌研发的新一代开源大语言模型&#xff0c;中文名&#xff1a;雅意&#xff0c;采用了超过 2 万亿 Tokens 的高质量、多语言语料进行预训练。 开源地址&#xff1a;https://github.com/wenge-research/YAYI2 YAYI2-30B是其模型规模&#xff0c;是基…

文件上传进阶绕过(二)4个技巧和靶场实战

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 0、环境准备 请移步《文件上传靶场实战&#xff1a;upl…

Unity 实现双击交互

Unity 实现双击交互 Unity中要实现单击交互很简单&#xff0c;使用Button、Toggle、EventTrigger事件都可以实现&#xff0c;但是要实现双击某个物体触发交互事件&#xff0c;则需要另外编写脚本。 方法是在EventTrigger中IPointerClickHandler下的点击事件中编写通过短时间间…

Docker 项目如何使用 Dockerfile 构建镜像?

1、Docker 和 Dockerfile 的重要性 1.1、Docker 简介&#xff1a;讲述 Docker 的起源、它是如何革新现代软件开发的&#xff0c;以及它为开发者和运维团队带来的好处。重点强调 Docker 的轻量级特性和它在提高应用部署、扩展和隔离方面的优势。 本文已收录于&#xff0c;我的…

C++ | 四、指针、链表

指针 指针用来储存地址定义方式&#xff0c;int *ptr;&#xff0c;使用*来表示所定义的变量是指针取地址符&#xff0c;ptr &a;&#xff0c;通过&来取得一个普通变量的地址&#xff0c;并储存到指针中取值&#xff08;解引用&#xff09;&#xff0c;想要取得一个指针…

【华为OD机试真题2023CD卷 JAVAJS】查找一个有向网络的头节点和尾节点

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 查找一个有向网络的头节点和尾节点 知识点图DFS搜索 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 给定一个有向图,图中可能包含有环,图使用二维矩阵表示,每一行的第一列表示起始节点,第二列表示终止节…

LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置

在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(lo…

Java 线程

1. 实现多线程的 2 种方式 Oracle 官网的文档中给出了 2 种实现多线程的方式&#xff1a; 实现 Runnable 接口&#xff1b;继承 Thread 类。 以上两种方式都会调用 Thread.run() 方法&#xff0c;区别是&#xff1a; 实现 Runnable 接口&#xff0c;只是执行 Thread.run() …

【迅搜17】SCWS分词(二)自定义字典及分词器

SCWS分词&#xff08;二&#xff09;自定义字典及分词器 经过上篇文章的学习&#xff0c;相信大家对分词的概念已经有了更深入的了解了吧。我们也知道了&#xff0c;SCWS 是 XS 中的一个重要组成部分&#xff0c;但它也是可以单独拿出来使用的。而对于分词器来说&#xff0c;不…

【新】Unity Meta Quest MR 开发(一):Passthrough 透视配置

文章目录 &#x1f4d5;教程说明&#x1f4d5;配置透视的串流调试功能&#x1f4d5;第一步&#xff1a;设置 OVRManager&#x1f4d5;第二步&#xff1a;添加 OVRPassthroughLayer 脚本&#x1f4d5;第三步&#xff1a;在场景中添加虚拟物体&#x1f4d5;第四步&#xff1a;设置…

202406读书笔记|《沉睡的线条世界》——翻山越岭,只为与你分享点滴的快乐

《沉睡的线条世界》登登登Dn绘著&#xff0c;简简单单的小画&#xff0c;简简单单的线条&#xff0c;简简单单的语言&#xff0c;温馨又有一点暖心。 怎样的你都好&#xff0c;做最真实的自己。 部分节选如下&#xff1a; 愿你我永远有热情&#xff0c;永远能为生活的每一个小惊…