问题 E: 彩色气球
时间限制: 1 Sec 内存限制: 128 MB
题目描述
PIPI喜欢收集气球,气球有多种颜色,一共有N个气球摆成一排,第 i 个气球颜色为 Ci ,它们的位置都是固定的。PIPI喜欢五彩缤纷的气球,所以他不希望有重复的颜色。他有一次机会,可以收集任意一段连续区间内的气球。求出PIPI最多能收集多少个气球。
输入
第一行一个正整数 N ,表示共有 N 个气球。
第二行共有 N 个正整数,第 i 个正整数表示第 i 个气球的颜色 Ci
1<=N<=1e6,0<=Ci<=1e9
输出
一个整数表示PIPI最多能收集多少个气球。
样例输入
5 1 2 2 3 4
样例输出
3
这题用的是尺取法,当然这是我第一次听说,附上别人的代码:
#include<stdio.h>
int a[1000010];
int main(){
int n,front,rear,max,i,j;
scanf("%d",&n)!=EOF;
front = 0;
rear = -1;
max = 0;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
for(j=front;j<=rear;j++){
if(a[i]==a[j]){
front = j+1;
break;
}
}
rear++;
max = rear - front +1>max ? rear-front+1 : max;
}
printf("%d\n",max);
}