博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AcWing - 最长连续不重复子序列(双指针)
阅读量:1999 次
发布时间:2019-04-28

本文共 845 字,大约阅读时间需要 2 分钟。

题目链接:

时/空限制:1s / 64MB

题目描述

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

输入格式

第一行包含整数n。

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

输出格式

共一行,包含一个整数,表示最长的不包含重复数字的连续子序列的长度。

数据范围

1≤n≤100000

输入样例

5

1 2 2 3 5

输出样例

3

解题思路

题意:求出最长的不包含重复数字的连续区间的长度。

思路:我们可以利用双指针法,令l为慢指针,r为快指针,如果快指针的元素出现过,那么就将慢指针往前走,并消除标记,直到把和快指针的元素相等的那个标记去掉。快指针每次往前走的是标记,慢指针走是取消标记,每次更新最大值就行了。

Accepted Code:

/*  * @Author: lzyws739307453  * @Language: C++  */#include 
using namespace std;const int MAXN = 100005;bool vis[MAXN];int spt[MAXN];int main() { int n, max_ = 0; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &spt[i]); for (int r = 0, l = 0; r < n; r++) { while (vis[spt[r]] && l <= r) { vis[spt[l]] = false; l++; } vis[spt[r]] = true; max_ = max(r - l + 1, max_); } printf("%d\n", max_); return 0;}

转载地址:http://vybtf.baihongyu.com/

你可能感兴趣的文章
头文件中 #ifndef---#define---#endif的作用
查看>>
Ant内置任务之whichresource
查看>>
Ant内置任务之symlink
查看>>
jface databinding:部分实现POJO对象的监测
查看>>
深入理解python--线程、进程与协程(1)
查看>>
Java--流重点总结初稿
查看>>
JavaWeb:HttpServletResponse和HttpServletRequest
查看>>
ImageView scaleType
查看>>
字符串的排序
查看>>
内存分配(mallloc,calloc,realloc,new)
查看>>
使用 Minidumps 和 Visual Studio .NET 进行崩溃后调试
查看>>
struts返回xml数据例子
查看>>
内存对齐详解
查看>>
秋招总结(一)-C++归纳
查看>>
秋招总结(三)-操作系统归纳
查看>>
带缓冲I/O 和不带缓冲I/O的区别与联系
查看>>
LINUX CP命令详解
查看>>
source insight快捷键及使用技巧
查看>>
映 射 ALT 键
查看>>
vim使用快捷键F4生成文件头注释、F5生成main函数模板、F6生成.h文件框架模板
查看>>