最长连续不重复子序列(双指针)
作者:互联网
题目
给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续子序列,输出它的长度。
输入格式
第一行包含整数n。
第二行包含n个整数(均在0~100000范围内),表示整数序列。
输出格式
共一行,包含一个整数,表示最长的不包含重复数字的连续子序列的长度。
数据范围
1≤n≤100000
输入样例:
5
1 2 2 3 5
输出样例:
3
#include <iostream> using namespace std; const int N = 1e6; int a[N], s[N];//a[N]整数序列,s[N]表示当前j到i区间每一个数出现的次数。 int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; int res = 0; for (int i = 0, j = 0; i < n; i++) { s[a[i]] ++;//标记第a[i]个位置的数 while (s[a[i]] > 1)//判断a[i]位置的数是否出现重复 { //如果出现重复 s[a[j]] --;//把j拿出去 j++;//j往后移 } res = max(res, i - j + 1); } cout << res << endl; return 0; }
标签:包含,int,res,重复子,整数,++,序列,指针 来源: https://www.cnblogs.com/ITduange/p/14454022.html