DAY28| 93. 复原IP地址 ,79.子集 ,90.子集II

文章目录

    • 93.复原IP地址
    • 78.子集
    • 90.子集II

93.复原IP地址

文字讲解:复原IP地址

视频讲解:复原IP地址

**状态:**此题调试了几次ok,与昨天的分割回文子串相比,就是在判断终止条件处需要处理;

思路:

代码:

class Solution {List<String> result = new ArrayList<>();LinkedList<String> tempList = new LinkedList<>();public List<String> restoreIpAddresses(String s) {backTracking(0, s);return result;}public void backTracking(Integer startIndex, String s) {if (tempList.size() == 3) {if (validIpParam(s.substring(startIndex, s.length()))) {tempList.offer(s.substring(startIndex, s.length()));result.add(getIp());tempList.pollLast();}return;}for (int i = startIndex; i < s.length() && tempList.size()<=4; i++) {if (validIpParam(s.substring(startIndex, i+1))) {tempList.offer(s.substring(startIndex, i+1));} else {continue;}backTracking(i+1, s);tempList.pollLast();}}public boolean validIpParam(String s) {if (s == null || s.length()==0) {return false;}if (s.length()>=2 && s.charAt(0)=='0') {return false;}if (s.length()>3) {return false;}Integer num = Integer.valueOf(s);if (num < 0 || num > 255) {return false;}return true;}public String getIp() {StringBuilder resultStr = new StringBuilder();for (int i = 0; i < tempList.size(); i++) {if (i==tempList.size()-1) {resultStr.append(tempList.get(i));} else {resultStr.append(tempList.get(i)).append(".");}}return resultStr.toString();}
}

78.子集

文字讲解:子集

视频讲解:子集

状态:这一题的关键在于收集元素的位置,理解了回溯算法中的树形结构和理论知识,这题可以想到在for循环中收集元素即可

思路:

代码:

class Solution {List<List<Integer>> result = new ArrayList<>();LinkedList<Integer> tempList = new LinkedList<>();public List<List<Integer>> subsets(int[] nums) {backTracking(nums, 0);result.add(new ArrayList<>());return result;}public void backTracking(int[] nums, int index) {if (index>=nums.length) {return;}for (int i = index; i < nums.length; i++) {tempList.add(nums[i]);//收集元素result.add(new ArrayList<>(tempList));backTracking(nums, i+1);tempList.pollLast();}}
}

90.子集II

文字讲解:子集II

视频讲解:子集II

状态:这题秒了

思路:

代码:

class Solution {List<List<Integer>> result = new ArrayList<>();LinkedList<Integer> tempList = new LinkedList<>();public List<List<Integer>> subsetsWithDup(int[] nums) {result.add(tempList);//对数组先进行排序Arrays.sort(nums);backTracking(nums, 0);return result;}public void backTracking(int[] nums, int startIndex) {if (startIndex>=nums.length) {return;}for (int i = startIndex; i < nums.length; i++) {if (i>startIndex&&nums[i]==nums[i-1]) {continue;}tempList.offer(nums[i]);result.add(new ArrayList<>(tempList));backTracking(nums, i+1);tempList.pollLast();}}
}

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

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

相关文章

设计模式- 单例模式(Singleton)结构|实现方式|优缺点|场景

目录 设计模式&#xff08;分类&#xff09; 设计模式&#xff08;六大原则&#xff09; 创建型 工厂方法 抽象工厂模式 单例模式 建造者模式 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;其…

rust : condvar中一对一和多对一模式初探

condvar是不经常碰到的&#xff0c;但其实在tokio之类库中&#xff0c;还是非常核心的作用。 想进一步体会condvar的使用&#xff0c;还是从场景出发。 一、一个通知发送者&#xff0c;一个接收者 假定一个员工收到一个任务&#xff0c;就是模拟是一个时间片&#xff0c;到时…

【Qt】设置QT标准对话框为中文字体

设置QT标准对话框为中文字体 一、问题二、解决方法1、找到Qt内置的翻译文件 qt_zh_CN.qm2、在代码中加载该文件 一、问题 在Qt中我们使用的标准对话框都是英文&#xff0c;例如下面的 字体选择对话框&#xff0c;但是实际中我们需要构建的是中文对话框。 所以我们需要使用Qt官…

19篇 vue3进阶

一 基础特性 1. **Composition API**&#xff1a;引入了组合式 API&#xff0c;允许以函数的方式组织组件逻辑。 2. **响应式系统**&#xff1a;使用 Proxy 作为其响应式系统的基础&#xff0c;提供更精确的依赖追踪。 3. **模板语法**&#xff1a;保留了 Vue 2 的模板语法…

MySQL InnoDB事务隔离级别与锁机制深入解析

引言 在当今的数据库系统中&#xff0c;事务管理是确保数据一致性和完整性的关键。事务是数据库操作的基本单元&#xff0c;它将一系列的数据库操作组合成一个逻辑工作单元&#xff0c;要么全部成功执行&#xff0c;要么全部失败回滚&#xff0c;这就是所谓的ACID属性&#xf…

js自动缩放页面,html自动缩放页面,大屏自动缩放页面,数字看板自动缩放页面,大数据看板自动缩放页面

js自动缩放页面&#xff0c;html自动缩放页面&#xff0c;大屏自动缩放页面&#xff0c;数字看板自动缩放页面&#xff0c;大数据看板自动缩放页面 由纯JS实现 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"…

vue 注册自定义指令,对输入框输入内容过滤(区分中英文)

注册vue全局指令 对el-input输入框进行最大长度过滤&#xff08;区分中英文&#xff09; 过滤空格 注册全局指令 main.js /*** 输入框最长输入限制* param {*} e 文本内容* param {number} maxlength 最大字符长度* param {boolean} trim 是否过滤空格* returns {string} 最…

acwing算法提高之图论--有向图的强连通分量

目录 1 介绍2 训练 1 介绍 本博客介绍有向图的强连通分量的题目。 连通分量&#xff1a;是针对有向图的一个概念。对于分量中任意两个结点a、b&#xff0c;必然可以从a走到b&#xff0c;且从b走到a。 强连通分量&#xff1a;是针对有向图的一个概念。极大强连通分量&#xff…

【数据结构】单链表的头节点与尾节点

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;数据结构 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

玄子Share-计算机网络参考模型

玄子Share-计算机网络参考模型 分层思想 利用七层参考模型&#xff0c;便于在网络通信过程中&#xff0c;快速的分析问题&#xff0c;定位问题并解决问题 将复杂的流程分解为几个功能相对单一的子过程 整个流程更加清晰&#xff0c;复杂问题简单化 更容易发现问题并针对性的…

【Java开发指南 | 第十七篇】Java 方法

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 简介语法实例构造方法 简介 Java中的方法是用来执行特定任务的一组语句&#xff0c;可以重复使用。它们包含在类或对象中&#xff0c;并通过调用来执行。 举个例子&#xff0c;println() 是一个方法&#xff…

动态内存管理 柔性数组

文章目录 动态内存函数 malloc freecallocrealloc 重新开辟空间realloc 也可以第一个参数为NULL&#xff0c;则是直接开辟内存&#xff0c;类似于malloc用法 常见的动态内存错误对空指针进行解引用操作对开辟的内存越界访问对非动态开辟的内存使用free释放使用free释放动态开辟…

vue2 在循环里,给字体加上随机颜色并加上随机图标且少重复

在循环里&#xff0c;给字体加上随机颜色并加上随机图标且少重复 <template><div class"pbfb5"><el-row :gutter"32"><el-col :xs"6" :sm"6" :lg"6" style"margin-bottom:32px;" v-for&quo…

(四)相关性分析 学习简要笔记 #统计学 #CDA学习打卡

目录 一. 相关性分析简介 二. 相关性分析方法 1&#xff09;连续型变量vs连续型变量&#xff1a;Pearson/Spearman &#xff08;a&#xff09;Pearson &#xff08;b&#xff09;Spearman等级相关系数 2&#xff09;二分类变量&#xff08;自然&#xff09;vs连续型变量&…

macos知名的清理软件 cleanmymac和腾讯柠檬哪个好 cleanmymacx有必要买吗

MacOS是一款优秀的操作系统&#xff0c;但是随着使用时间的增加&#xff0c;它也会产生一些不必要的垃圾文件&#xff0c;占用磁盘空间和内存资源&#xff0c;影响系统的性能和稳定性。为了保持MacOS的清洁和高效&#xff0c;我们需要使用一些专业的清理软件来定期扫描和清除这…

CentOS服务器安装宝塔(图文详解)

宝塔的操作其实就是类似于把linux的指令使用方式&#xff0c;通过宝塔这个第三方工具进行可视化展示&#xff0c;但其实&#xff0c;他还是在操作linux&#xff0c;只是不需要你去记那么多的指令&#xff0c;宝塔把大多数的工具都集成到自己里面&#xff0c;这样你就可以在宝塔…

信号量Semaphore

什么是信号量&#xff1f; C中的信号量&#xff08;Semaphore&#xff09;是一种同步对象&#xff0c;用于控制对共享资源的访问&#xff0c;以防止多个线程或进程同时访问同一资源&#xff0c;从而避免数据不一致的问题。信号量通过维护一个计数值来实现这一功能&#xff0c;…

【Golang】Gin教学-获取请求信息并返回

安装Gin初始化Gin处理所有HTTP请求获取请求的URL和Method获取请求参数根据Content-Type判断请求数据类型处理JSON数据处理表单数据处理文件返回JSON响应启动服务完整代码测试 Gin是一个用Go&#xff08;又称Golang&#xff09;编写的HTTP Web框架&#xff0c;它具有高性能和简洁…

Event loop(Message loop)

事件循环&#xff08;消息循环&#xff09; 浏览器的进程模型 进程 程序运行需要有它自己专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程 每个应用至少有一个进程&#xff0c;进程之间相互独立&#xff0c;即使要通信&#xff0c;也需要双方同意。 线程 …

Java并发体系--atomic--字段类

atomic--字段类 Atomic字段类是一种原子操作类&#xff0c;用于实现多线程环境下对共享变量的原子操作。它可以确保在并发情况下&#xff0c;对共享变量的操作是原子性的&#xff0c;不会出现线程安全问题。 Atomic字段类提供了一些方法&#xff0c;比如get()和set()方法用…