赞
踩
- #include <iostream>
- using namespace std;
- const int N=1e5+2;
- int p[N],RD[N];
- int n,ML
- //注意;p[]数组是来记录一知数列的,RD[]是记录元素出现个数的;
- //ML:是记录最大长度的;
- int maxnum(int x,int y)
- {
- if x>y return x;
- else return y;
- }
-
- int main()
- {
- cin>>n;
- for(int i=0;i<n;i++) cin>>p[i];
- for(int i=0,j=0;i<n;i++)//此中i是来管数列中的元素的遍历的,而j是用来确定ML长度
- {
- RD[p[i]]++; //和重复元素的位置的;
- while(RD[p[i]]>1) RD[p[j++]]--;//为什么要j++,目的是让j抵达重复元素的位置
- ML=maxnum(ML,i-j+1);//i-j+1是在遍历过程中没有碰见重复元素的长度,用ML来记录
- //保存该遍历过程中最长的元素个数;
- }
- printf("%d",ML);
- reyturn 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。