目录
1.题目描述
给定一个长度为 nn 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。
输入格式
第一行包含整数 nn。
第二行包含 nn 个整数(均在 0∼1050∼105 范围内),表示整数序列。
输出格式
共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。
数据范围
1≤n≤1051≤n≤105
输入样例:
5
1 2 2 3 5
输出样例:
3
2.AC
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 1e5 + 10;
int n, ans;
int a[N], b[N];
int main () {
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
int l = 1;
for (int i = 1; i <= n; i++) {
while (b[a[i]]) {
b[a[l++]]--;
}
b[a[i]]++;
ans = max (ans, i-l+1);
}
printf("%d", ans);
}