题目描述
小埋最近迷上了优雅序列。
优雅序列的定义是,在一段连续的序列中,包含的数字中不会出现重复数字。
现在给你一个长度为n的数组,请你告诉小埋其中最长的优雅序列的长度是多少。
输入格式
第一行是一个正整数n,n表示数组的长度。
第二行有n用空格隔开的正整数,有n个整数数字i。
输出格式
一个整数,符合题目要求的最长子数组的长度。
样例#1
样例输入#1
5
1 2 3 1 2
样例输出#1
3
样例 #2
样例输入 #2
9
1 1 1 2 2 2 1 1 3
样例输出 #2
2
数据范围
1<=n<=2∗10^5;
1<=i<=2∗10^5。
题目思路
该题要求求出一段连续的子序列,使其中不包含重复数字。
那么就可以想到用一个unordered_set来存储当前子序列中出现过的数字
接下来就是注意用双指针来表示当前的序列范围就可以了
核心代码
//arr为输入的序列
unordered_set<int> lib;
int left=0,ret=0;
for(int right=0;right<n;right++)
{
while(lib.find(arr[right])!=lib.end())
{
lib.erase(arr[left]);
left++;
}
lib.insert(arr[right]);
ret=max(ret,right-left+1);
}