自己又调不明白 怎么改 问题在哪里
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <cmath>
#include<map>
using namespace std;
const int N = 1e6+10;
typedef long long LL;
int a[N];
map<int, int>mp;
int main() {
int t; int num = 0;
scanf("%d", &t);
for (int i = 0; i < t; i++) {
mp.clear(); int ans = 0;
int n; scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int l = 0, r = 0; l<=r&&r<n; ) {
//如果没有重复元素 r右移
if (!mp.count(a[r]) ) {
mp[a[r]]++;
ans = max(ans, r - l+1);
r++;
}
//如果有重复元素 l右移寻找下一个区间
else {
mp[a[l]]--;
l++;
}
}
printf("%d\n", ans);
}
return 0;
}