java算法第28天 | 93.复原IP地址 78.子集 90.子集II

93.复原IP地址

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

思路: 这里startIndex为插入‘.’的位置,使用回溯法遍历所有插入的位置,直接在原始字符串上操作。要注意的是开闭区间的规定(这里我规定的是左闭右闭区间)。还要明确什么时候能return。

class Solution {private List<String> res=new ArrayList<>();public List<String> restoreIpAddresses(String s) {StringBuilder sb=new StringBuilder(s);backtracking(sb,0,0);return res;}public void backtracking(StringBuilder sb,int stratIndex,int pointNums){if(stratIndex>=sb.length()) return;if(pointNums==3 && isValid(sb,stratIndex,sb.length()-1)){res.add(sb.toString());return;}  for(int i=stratIndex;i<sb.length();i++){if(isValid(sb,stratIndex,i)){//如果子串合法sb.insert(i+1,'.');backtracking(sb,i+2,pointNums+1);sb.deleteCharAt(i+1);}}return;}public boolean isValid(StringBuilder sb,int left,int right){if(sb.charAt(left)=='0' && right>left) return false;//判断前导0的情况int sum=0;for(int i=left;i<=right;i++){if(sb.charAt(i)<'0' && sb.charAt(i)>'9') return false;//判断不合法字符sum=sum*10+(sb.charAt(i)-'0');//计算总和}if(sum>=0 && sum<=255) return true;else{return false;}}
}

时间复杂度: O(3^4),IP地址最多包含4个数字,每个数字最多有3种可能的分割方式,则搜索树的最大深度为4,每个节点最多有3个子节点。
空间复杂度: O(n)

78.子集

在这里插入图片描述
在这里插入图片描述
子集和组合的区别:组合只需要获取叶子节点,而子集问题需要记录所有节点。
只需要在每次递归前将当前的子串写入结果中。

class Solution {private List<Integer> path=new LinkedList<>();private 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);}return;}
}

时间复杂度: O(n * 2^n)
空间复杂度: O(n)

90.子集II

在这里插入图片描述
在这里插入图片描述
这道题与上一道不同点就是需要去重,去重的思想和之前组合的去重一样,需要横向剪枝,保留竖向的树枝。

class Solution {private List<Integer> path=new LinkedList<>();private List<List<Integer>> res=new ArrayList<>();public List<List<Integer>> subsetsWithDup(int[] nums) {Arrays.sort(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++){if(i>startIndex && nums[i]==nums[i-1]) continue;path.add(nums[i]);backtracking(nums,i+1);path.remove(path.size()-1);}return;}
}

时间复杂度: O(n * 2^n)
空间复杂度: O(n)

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

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

相关文章

HTML中的常用标签用法总结(持续更新...)

&#x1f31f; 欢迎来到 我的博客&#xff01; &#x1f308; &#x1f4a1; 探索未知, 分享知识 !&#x1f4ab; 本文目录 1. 标题标签2. 段落标签3. 链接标签4. 列表标签5. 图像标签6. 表格标签 1. 标题标签 <h1>至<h6>用于定义标题。<h1>是最大的标题&am…

模型部署——RKNN模型量化精度分析及混合量化提高精度

模型部署——RKNN模型量化精度分析及混合量化提高精度&#xff08;附代码&#xff09;-CSDN博客 3.1 量化精度分析流程 计算不同情况下&#xff0c;同一层网络输入值的余弦距离&#xff0c;来近似的查看每一层精度损失的情况。具体量化精度分析的流程如下&#xff1a; 3.2 量…

ONNX @riscv+OpenKylin

安装onnxruntime-riscv 下载软件: git clone https://github.com/ucb-bar/onnxruntime-riscv apt install unzip cd onnxruntime-riscv && sh build.sh 报错... 改了g环境变量部分还是不行&#xff0c;放弃。 安装onnxruntime 使用这个库 git clone https://g…

数据结构大合集03——栈的相关函数运算算法

函数运算算法合集03 顺序栈的结构体顺序栈的基本运算的实现1. 初始化栈2. 销毁栈3. 判断栈是否为空4. 进栈5. 出栈6. 取栈顶元素 链栈的结构体链栈的基本运算的实现1. 初始化栈2. 销毁栈3. 判断是否为空4. 进栈5. 出栈6. 取栈顶元素 注&#xff1a; 本篇文章的概念合集 数据结构…

RocketMQ的重试机制

RocketMQ的重试机制是指:当消费者消费消息失败时,RocketMQ会在一定时间后重新将消息发送给消费者进行消费,以确保消息的可靠消费。 RocketMQ的重试机制主要体现在: 1.自动重试:Consumer在消费失败后,会在一定重试策略下定期重试消费失败的消息,直到成功或达到最大重试次数。 …

边缘检测-Tiny and Efficient Model for the Edge Detection Generalization

源代码: https://github.com/xavysp/TEED 论文地址&#xff1a;https://arxiv.org/pdf/2308.06468.pdf 大多数高级计算机视觉任务依赖于低级图像操作作为其初始过程。边缘检测、图像增强和超分辨率等操作为更高级的图像分析提供了基础。在这项工作中&#xff0c;我们考虑三个…

帮助读者掌握C语言编程基础知识的书籍

帮助读者掌握C语言编程的基础知识&#xff0c;了解如何将人工智能技术应用于自己的编程项目。 人工智能编程&#xff08;赋能C语言&#xff09; 作者&#xff1a; 黄箐、廖云燕、曾锦山、邢振昌 ISBN号&#xff1a; 9787302648796 出版日期&#xff1a; 2023-11-01 本书以C…

刷题DAY26 | LeetCode 39-组合总和 40-组合总和II 131-分割回文串

39 组合总和&#xff08;medium&#xff09; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates…

小程序绕过 sign 签名

之前看到了一篇文章【小程序绕过sign签名思路】之前在做小程序渗透时也遇到了这种情况&#xff0c;但是直接放弃测试了&#xff0c;发现这种思路后&#xff0c;又遇到了这种情况&#xff0c;记录下过程。 并没有漏洞分享&#xff0c;仅仅是把小程序也分享出来&#xff0c;方便…

什么是数组流

字节数组流 1.ByteArrayInputStream和ByteArrayOutputStream分别使用字节数组作为流的源和目标。 2.ByteArrayInputStream构造方法 •ByteArrayInputStream (byte[] buf) •ByteArrayInputStream (byte[] buf,int offset,int length) 3.ByteArrayInputStream常用方法 • public…

如何建立数字化招标采购(系统)评价体系?

前言 长期以来&#xff0c;采购的经济目标占据了主导地位&#xff0c;采购人、采购代理机构或出于“经济人”的本性&#xff0c;或迫于采购资金的限制&#xff0c;极易采购便宜的产品、工程和服务&#xff0c;而忽略了采购的价值。 有效的采购制度&#xff0c;不仅仅以控制成…

【以图搜图】GPUNPU适配万物识别模型和Milvus向量数据库

目录 以图搜图介绍项目地址Milvuscv_resnest101_general_recognition 代码使用流程结果展示模型部署环境Milvus部署及使用docker安装docker-compose安装Milvus可视化工具Attu进入网页端 Data数据示例点个赞再走呗&#xff01;比心&#x1f49e;️ 以图搜图 • &#x1f916; Mo…

[视觉基础知识]: 点云数据

https://pointclouds.org/documentation/tutorials/pcd_file_format.html PCD 不是第一种支持 3D 点云数据的文件类型。尤其是计算机图形学和计算几何学社区&#xff0c;已经创建了多种格式来描述使用激光扫描仪获取的任意多边形和点云。其中一些格式包括&#xff1a; PLY - …

Go微服务实战——服务的监控与链路追踪(监控数据可视化)

链路追踪背景 对于早期系统或者服务来说&#xff0c;开发人员一般通过打日志的方式来进行埋点&#xff08;常用的数据采集方式&#xff09;&#xff0c;然后再根据日志系统和性能监控定位及分析问题。对于单体的应用通过日志系统完全可以定位到问题&#xff0c;从而排查异常。…

Jpg图片怎么变成gif?三步在线转换gif动画

JPG是一种常见的图像格式&#xff0c;而GIF动态则是一种流行的动态图像格式。如果你想将多张JPG图片合成为一个GIF动画&#xff0c;下面是一些简单的方法来帮助你完成这个任务。通过使用Gif动画制作工具-GIF中文网&#xff0c;上传多张jpg格式图片轻松一键在线转换gif动画&…

uniapp H5打开应用商店

/* 点击事件 */downApp() {let sysInfo uni.getSystemInfoSync()if (sysInfo.osName ios) { // ios/* 跳转到ios商店 id后面接的就是苹果id */window.location.replace(itms-appss://apps.apple.com/cn/app/id6479005866)} else { // androidthis.detectDeviceBrand(sysInfo…

【shell】定时检查说明

想法&#xff1a;定一个时间&#xff0c;然后查询需要格式的相关文件&#xff0c;移到一个新的文件夹下面 文件单独检查 进入账号su root之后&#xff0c;进入到crontab -e进行添加 #凌晨1点10分 0点30分 10 1 * * * /data/edw_ods/check_st/1move_file.sh 30 0 * * * /data…

Python爬虫获取接口数据

Python爬虫获取接口数据 正常人的操作​​​​​​​​​​爬虫的思路标题获取请求信息标题请求转换为代码完整代码请求返回信息执行程序获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获…

Docker与containerd:容器技术的双璧

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Docker幻想曲&#xff1a;从零开始&#xff0c;征服容器宇宙》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、Docker和containerd的背景…

ISO9001质量管理体系是什么,ISO9001认证详细介绍

ISO9001质量管理体系是国际标准化组织&#xff08;ISO&#xff09;制定的一套质量管理标准&#xff0c;旨在帮助企业建立有效的质量管理体系&#xff0c;提高产品和服务的质量水平&#xff0c;增强企业的竞争力和市场信誉。ISO9001认证则是企业按照ISO9001标准建立起质量管理体…