AcWing 799. 最长连续不重复子序列

Problem: AcWing 799. 最长连续不重复子序列

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

这是一个求最长连续不重复子序列的问题。我们可以使用双指针(滑动窗口)的方法来解决。我们维护一个窗口,并使用一个数组来记录窗口内元素的出现次数。当窗口右端的元素在窗口内出现次数大于1时,我们就移动窗口的左端,直到窗口内所有元素都不重复。在这个过程中,我们记录下窗口的最大长度,这就是我们要找的最长连续不重复子序列的长度。

解题方法

我们使用两个指针i和j,分别表示窗口的左端和右端。初始时,i和j都指向序列的第一个元素。然后我们向右移动j,增大窗口,直到窗口内有重复元素。此时,我们开始向右移动i,缩小窗口,直到窗口内没有重复元素。在这个过程中,我们记录下窗口的最大长度,这就是我们要找的最长连续不重复子序列的长度。

复杂度

时间复杂度:

O ( n ) O(n) O(n),其中n是序列的长度。我们只需要遍历一次序列。

空间复杂度:

O ( n ) O(n) O(n),我们需要一个长度为n的数组来记录窗口内元素的出现次数。

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));static StreamTokenizer sr = new StreamTokenizer(in);static int MAXN = (int) (1e5 + 10);static int n;static int[] arr = new int[MAXN];static int[] s = new int[MAXN];public static void main(String[] args) throws IOException {n = nextInt();for (int i = 0; i < n; i++) {arr[i] = nextInt();}int ans = 0;for(int i = 0, j = 0; j < n; j++) {s[arr[j]]++;while(s[arr[j]] > 1) {s[arr[i++]]--;}ans = Math.max(ans, j - i + 1);}out.println(ans);out.flush();}static int nextInt() throws IOException {sr.nextToken();return (int) sr.nval;}}

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

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

相关文章

深度学习的一个完整过程通常包括以下几个步骤

深度学习的一个完整过程通常包括以下几个步骤&#xff1a; 问题定义和数据收集&#xff1a; 定义清晰的问题&#xff0c;明确任务的类型&#xff08;分类、回归、聚类等&#xff09;以及预期的输出。收集和整理用于训练和评估模型的数据集。确保数据集的质量&#xff0c;进行预…

车联网产品与应用

在中国&#xff0c;先是小鹏汽车官宣“智驾覆盖城市数量、可用里程以及用户口碑均为行业第一”。后有华为问界官宣OTA&#xff0c;领航功能全国可用路段高达99%&#xff0c;“全国都能用&#xff0c;哪哪都能开”。 似乎分分钟&#xff0c;“自动驾驶”就要干成了。但日新月异的…

Day31|贪心算法1

贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 无固定套路&#xff0c;举不出反例&#xff0c;就可以试试贪心。 一般解题步骤&#xff1a; 1.将问题分解成若干子问题 2.找出适合的贪心策略 3.求解每一个子问题的最优解 4.将局部最优解堆叠成全局最…

【MySQL】深入解析 Buffer Pool 缓冲池

文章目录 1、前置知识1.1、Buffer Pool介绍1.2、后台线程1.2.1、Master Thread1.2.2、IO Thread1.2.3、Purge Thread1.2.4、Page Cleaner Thread 1.3、重做日志缓冲池 2、Buffer Pool 组成2.1、数据页2.2、索引页2.3、undo页2.4、插入缓冲2.5、锁空间2.6、数据字典2.6、自适应哈…

JavaScript之structuredClone现代深拷贝

在JavaScript中&#xff0c;实现深拷贝的方式有很多种&#xff0c;每种方式都有其优点和缺点。今天介绍一种原生JavaScript提供的structuredClone实现深拷贝。 下面列举一些常见的方式&#xff0c;以及它们的代码示例和优缺点&#xff1a; 1. 使用JSON.parse(JSON.stringify(…

代码随想录 二叉树第四周

目录 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众树 236.二叉树的最近公共祖先 617.合并二叉树 617. 合并二叉树 简单 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其…

【Rust】——切片

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

第105讲:Mycat垂直分表实战:从规划到解决问题的完整指南

文章目录 1.垂直分表的背景2.垂直分表案例实战2.1.垂直分表规划2.2.配置Mycat实现垂直分表2.3.重启Mycat2.4.在Mycat命令行中导入数据结构2.5.查看由Mycat分表后每个分片上存储的表2.6.Mycat垂直分表后可能遇到的问题2.7.垂直分表完成 1.垂直分表的背景 我们的商城系统数据库&…

Unity编辑器下如何获取物体(GameObject)的中心位置

注意仅能在编辑器下才能使用该方法 实现方式依靠UnityEditor.Tools提供的参数&#xff0c;具体实现如下&#xff1a; 获取单个物体的中心坐标 public static Vector3 GetGameObjectCenter(GameObject gameObject) {// 选中物体Selection.activeObject gameObject;// 记录当前…

C#中Byte.Parse的用法,如果需要解析含有数字以外的字符,应该如何使用?

在C#中&#xff0c;Byte.Parse用于将字符串解析为byte类型的数字。它的用法如下&#xff1a; byte result Byte.Parse(str);其中&#xff0c;str是要解析的字符串。 如果要解析的字符串含有数字以外的字符&#xff0c;Byte.Parse会抛出一个FormatException异常。为了处理这种…

javaWebssh水利综合信息管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh水利综合信息管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCA…

MATLAB 实现贝叶斯决策

1. 原理 后验概率&#xff1a; 1.最小错误率决策&#xff08;最大后验概率决策&#xff09;&#xff1a; 2.最小风险决策&#xff1a; 3.正态分布下的贝叶斯决策 2. 过程 2.1 训练集数据可视化 导入两类训练集数据&#xff0c;并绘制其数据分布&#xff0c;如下&#xff1a;…

云时代【5】—— LXC 与 容器

云时代【5】—— LXC 与 容器 三、LXC&#xff08;一&#xff09;基本介绍&#xff08;二&#xff09;相关 Linux 指令实战&#xff1a;使用 LXC 操作容器 四、Docker&#xff08;一&#xff09;删除、安装、配置&#xff08;二&#xff09;镜像仓库1. 分类2. 相关指令&#xf…

JavaSE-09(Java IO精华总结)

Java IO 简单做个总结&#xff1a; 1 .InputStream/OutputStream 字节流的抽象类。2 .Reader/Writer 字符流的抽象类。3 .FileInputStream/FileOutputStream 节点流&#xff1a;以字节为单位直接操作“文件”。4 .ByteArrayInputStream/ByteArrayOutputStream 节点流&#xff…

Running job: job_1709516801756_0003

** yarn运行卡在Running job: job_1709516801756_0003问题解决&#xff1a; ** 在运行wordcount时出现错误&#xff0c;一直卡住 运行命令&#xff1a;hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output 出现错误&#xff1a…

岭回归算法

回归分析方法是利用数理统计方法分析数据&#xff0c;建立自变量和因变量间的回归模型&#xff0c;用于预测因变量变化的分析方法。其中比较经典的是HoerI和Kennard提出的岭回归算法。岭回归算法是在最小二乘法的基础上引|入正则项&#xff0c;使回归模型具有较好泛化能力和稳定…

经典思路!人参叶际微生物如何发8分文章?

中国中医科学院中药研究所在《Environmental Microbiome》期刊上(IF7.9)发表了关于叶际真菌微生态网络的文章&#xff0c;该研究通过对ITS测序结果和环境因子测定结果以及皂苷含量测定结果进行生信分析&#xff0c;提出了维持微生态网络的稳定性策略和影响皂苷含量的因素。 期刊…

H12-821_113

113.如图所示是路由器现ATE输出的部分信息&#xff0c;以下关于这部分信息的描述&#xff0c;错误的是哪一项&#xff1f; A.display pim rp-info命令用来查看组播组对应的RP信息 B.RP地址是2.2.2.2 C.组地址是225.0.0.0 D.RP的优先级是0 答案&#xff1a;C 注释&#xff1a; …

HCIA-Datacom题库(自己整理分类的)_29_PPP协议判断【6道题】

1.数据链路层采用PPP封装链路两端的IP地址可以不在同一个网段。√ 2.PPP链路两端不在同一网段不能通信。 3.参考以下拓扑及配置&#xff0c;路由器R1与R2通过Serial低速线缆连接&#xff0c;且数据链路层封装使用PPP。当R1和R2的Holdtime不一致时&#xff0c;PPP协商失败&…

python使用常用的路径问题

PythonPath多个路径的使用 通过命令行直接修改 export PYTHONPATH$PYTHONPATH:/path/to/directoryPythonPath多个路径的使用 export PYTHONPATH$PYTHONPATH:/path/to/directory1:/path/to/directory2PythonPath多个路径的使用 python path 移除路径 python path python中…