【算法刷题day28】Leetcode:93. 复原 IP 地址、78. 子集、90. 子集 II

news/2024/10/21 7:39:45/

文章目录

    • Leetcode 93. 复原 IP 地址
      • 解题思路
      • 代码
      • 总结
    • Leetcode 78. 子集
      • 解题思路
      • 代码
      • 总结
    • Leetcode 90. 子集 II
      • 解题思路
      • 代码
      • 总结

草稿图网站
java的Deque

Leetcode 93. 复原 IP 地址

题目:93. 复原 IP 地址
解析:代码随想录解析

解题思路

“.”参数初始化为0,小于3的时候,每次回溯都在结尾加上一个“.”。
回溯终止条件:“.”参数为4,开始索引等于字符串的长度。

代码

class Solution {List<String> res = new ArrayList<>();StringBuilder sb = new StringBuilder();private boolean isValidSegment(String segment) {if (segment.length() > 1 && segment.charAt(0) == '0') // 以0开头的数字段无效return false;try {int num = Integer.valueOf(segment);return num >= 0 && num <= 255;} catch (NumberFormatException e) {return false;}}private void backtracking(String s, int startIndex, int parCount) {if (startIndex == s.length() && parCount == 4) {res.add(sb.toString());return;}if (startIndex == s.length() || parCount == 4)return;for (int i = startIndex; i < s.length() && i < startIndex + 3; i++) {if (isValidSegment(s.substring(startIndex, i+1))) {int len = sb.length();sb.append(s.substring(startIndex, i + 1));if (parCount < 3)sb.append('.');//最多加三次.backtracking(s, i + 1, parCount + 1);sb.setLength(len);//直接设置为原来的长度}}}public List<String> restoreIpAddresses(String s) {backtracking(s, 0, 0);return res;}
}

总结

暂无

Leetcode 78. 子集

题目:78. 子集
解析:代码随想录解析

解题思路

退出条件不需要写

代码

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

总结

秒了

Leetcode 90. 子集 II

题目:90. 子集 II
解析:代码随想录解析

解题思路

跟上一题的区别是多一个排序和去重

代码

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

总结


http://www.ppmy.cn/news/1426841.html

相关文章

ORACLE错误提示概述

OceanBase分布式数据库-海量数据 笔笔算数 保存起来方便自己查看错误代码。 ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程…

改进前后端交互实例

前后端交互实例(javaweb05)-CSDN博客 在这之前我假设大家都已经学完了IOC和DI 不明白的这里我也解释一下,首先是两个概念 1.控制反转:对象的创建控制权由程序自身转到外部(容器) 2.依赖注入:容器为程序提供运行时所依赖的资源 Bean对象:IOC容器中创建,关联的对象,称之为be…

生活中的洪特规则

不知道你还记不记得高中物理所学的一个奇特的物理规则&#xff1a;洪特规则。 洪特规则是德国人弗里德里希洪特&#xff08;F.Hund&#xff09;根据大量光谱实验数据总结出的一个规律&#xff0c;它指出电子分布到能量简并的原子轨道时&#xff0c;优先以自旋相同的方式分别占…

JavaWeb-登录校验

会话技术 浏览器使用的是http协议&#xff0c;多次请求间数据是不能共享的&#xff0c;例如我们要去访问用户数据的接口&#xff0c;但这时候用户是否已经登入了呢&#xff1f;是不知道的&#xff0c;为了解决这个问题&#xff0c;于是引入了会话跟踪技术。 会话&#xff1a;…

Windows如何安装JDK

JDK和JRE简介 JDK&#xff1a;Java Development ToolKit java开发工具包&#xff0c;包含JRE针对java程序开发者 JRE&#xff1a;Java Runtime Environment java程序的运行环境针对java使用者来说 下载JDK&#xff0c;进入官网下载 Oracle官网 双击下载好之后的exe文件&#…

论文笔记:Are Human-generated Demonstrations Necessary for In-context Learning?

iclr 2024 reviewer 评分 6668 1 intro 大型语言模型&#xff08;LLMs&#xff09;已显示出在上下文中学习的能力 给定几个带注释的示例作为演示&#xff0c;LLMs 能够为新的测试输入生成输出然而&#xff0c;现行的上下文学习&#xff08;ICL&#xff09;范式仍存在以下明显…

【算法刷题 | 回溯思想 06】4.17(子集、子集||)

文章目录 9.子集9.1题目9.2解法&#xff1a;回溯9.2.1回溯思路&#xff08;1&#xff09;函数返回值以及参数&#xff08;2&#xff09;终止条件&#xff08;3&#xff09;遍历过程 9.2.2代码实现 10.子集 ||10.1题目10.2解法&#xff1a;回溯10.2.1回溯思路10.2.2代码实现 9.子…

R:UpSet韦恩图制作

#安装UpSetR install.packages("UpSetR") library(UpSetR) #install.packages("UpSetR") library(UpSetR) library(Cairo) # 从CSV文件中读取数据 setwd("C:/Users/fordata/Desktop/研究生/第二个想法(16s肠型&#xff0b;宏基因组功能)/第二篇病毒组…