【12. 最大连续不重复子序列】

简介: . 最大连续不重复子序列

双指针算法的俩种情况

1661150824555.png

#include <iostream>
#include <string.h>
#include <cstdio>

using namespace std;

int main()
{
    char str [1000];
   //scanf("%s", str);
   
   
     fgets(str,sizeof(str), stdin);
     int n = strlen(str);
    for (int i = 0; i < n; i ++)
    {
        int j = i;
        while (j < n && str[j] != ' ') j ++;
        
        // 这道题的具体逻辑
        for (int k = i; k < j; k ++) cout << str[k];
        cout << endl;
        
        i = j;
    }
    return 0;
}
运行结果:
输入:
abc def cde
输出:
abc
def
cde

最大连续不重复子序列

在这里插入图片描述

  • 额外开辟一个数组S[N],动态的记录一下,元素出现了多少次,相当于i每次往后移动一格,就往S[N]中加入一个元素,如果j往前移动一格,相当于出现重复数字,在从S[N]中删除掉该元素。
  • 最后可以动态的统计出,该数组中有多少个数

给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。

题目

给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。

输入格式

第一行包含整数 n。

第二行包含 n个整数(均在 0∼100000范围内),表示整数序列。

输出格式

共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。

数据范围

1 ≤ n ≤ 100000

输入样例:

5
1 2 2 3 5

输出样例:

3

代码

#include<iostream>
using namespace std;

const int N = 100010;
int n;
int a[N],s[N];
int main()
{

   cin >> n;
   for (int i = 0; i < n; i ++)  cin >> a[i];
   
   int res = 0;
   for (int i = 0, j = 0; i < n; i ++)
   {
       s[a[i]] ++;
       while (s[a[i]] > 1)
       {
           s[a[j]] --;
           j ++;
       }
       res = max(res, i - j + 1);
   }
   cout << res << endl;
   return 0;
}
目录
相关文章
|
5月前
|
消息中间件 NoSQL Java
拒绝频繁写库!SpringBoot 整合 BufferTrigger 实现高性能“流量聚合”
本文介绍如何用SpringBoot整合BufferTrigger实现高性能流量聚合,解决高并发下频繁写库的痛点。通过快手开源的BufferTrigger组件,可将大量数据库操作合并为批量执行,显著提升I/O效率,适用于计数、埋点、状态同步等场景,兼具高性能与低延迟。
441 145
|
缓存 Java 数据库
Java Supplier 接口详解
在Java中,Supplier接口是一个重要的函数式接口,它属于java.util.function包,用于表示一个供应商,它不接受任何参数,但可以提供一个结果。Supplier通常用于延迟计算或生成值的场景。本文将详细介绍Supplier接口的用法以及如何在实际编程中应用它。
797 0
|
设计模式 前端开发 Java
SpringMVC基础入门及工作流程---全方面详细介绍
SpringMVC基础入门及工作流程---全方面详细介绍
667 0
Python-素数
本文介绍了如何使用 Python 判断素数,并通过具体示例展示了求 100 以内及自定义范围内所有素数的方法。内容包括素数的定义、判断素数的底层逻辑和步骤,以及详细的代码演示。适合初学者参考学习。
|
存储 弹性计算 数据挖掘
阿里云服务器e实例和u1实例有什么区别?ECS经济型和通用算力性能特性及优势详解
阿里云ECS云服务器的经济型e实例和通用算力型u1实例在性能、适用场景和价格上各有优势。e实例适合个人开发者和轻量级应用,性价比高;u1实例则更适合中小企业,提供更稳定的性能和更高的网络带宽。选择时可根据具体需求和预算进行决策。
|
设计模式 测试技术 持续交付
架构视角下的NHibernate:设计模式与企业级应用考量
【10月更文挑战第13天】随着软件开发向更复杂、更大规模的应用转变,数据访问层的设计变得尤为重要。NHibernate作为一个成熟的对象关系映射(ORM)框架,为企业级.NET应用程序提供了强大的支持。本文旨在为有一定经验的开发者提供一个全面的指南,介绍如何在架构层面有效地使用NHibernate,并结合领域驱动设计(DDD)原则来构建既强大又易于维护的数据层。
213 2
|
消息中间件 存储 负载均衡
zookeeper 特点、使用场景及安装,配置文件解析
zookeeper 特点、使用场景及安装,配置文件解析
460 2
|
安全 Java 索引
带你快速掌握Java中的String类和StringBuffer类(详解常用方法 | 区别 )
带你快速掌握Java中的String类和StringBuffer类(详解常用方法 | 区别 )
292 2
|
缓存 负载均衡 中间件
微服务架构下的服务发现与注册机制
【5月更文挑战第23天】在微服务架构的动态环境中,服务实例可能会频繁地上下线。为了维护系统的高可用性和伸缩性,服务发现与注册机制成为了一个关键因素。本文将探讨服务发现与注册的重要性,分析不同的实现策略,并展示如何利用这些机制来优化后端服务的交互流程。通过深入解析服务发现的多种模式及其对系统设计的影响,我们将提供一个清晰的指导,帮助开发者构建更加健壮和灵活的微服务系统。
|
安全 数据可视化 Java
管理订单状态,该用上状态机吗?
说到底Spring StateMachine上手难度非常大,如果没有用来做重型状态机的需求,十分不推荐普通的小项目进行接入。 最最重要的是,由于Spring StateMachine状态机实例不是无状态的,无法做到线程安全,所以代码要么需要使用锁同步,要么需要用Threadlocal,非常的痛苦和难用。 例如下面的Spring StateMachine代码就用了重量级锁保证线程安全,在高并发的互联网应用中,这种频繁的获取释放锁会造成严重的性能问题。
2330 0
管理订单状态,该用上状态机吗?

热门文章

最新文章