https://vjudge.net/problem/UVA-11572

题意:输入一个长度为n的序列A,找到一个尽量长的连续子序列,使得该序列中没有相同的元素。

思路:很简单的题,也没啥好解释的了。

#include<iostream>
#include<set>
using namespace std; const int maxn = + ;
int a[maxn];
int n; int maxd; void solve()
{
set<int> num;
int L = , R = ;
maxd = ;
int ans = ;
while (R < n)
{
if (!num.count(a[R]))
{
ans++;
num.insert(a[R]);
R++;
if (ans>maxd) maxd = ans;
}
else
{
num.erase(a[L]);
ans--;
L++;
}
}
} int main()
{
//freopen("D:\\txt.txt", "r", stdin);
int t;
cin >> t;
while (t--)
{
cin >> n;
for (int i = ; i < n; i++)
{
cin >> a[i];
}
solve();
cout << maxd << endl;
}
return ;
}
05-11 13:48