uva11572 Unique Snow akes(入门级TwoPoint)

给定长度为N的序列,求最长的连续序列,这个序列中的数是不重复的。

思路:TwoPoint,r维护加入,l维护减除,因为数字较大,需要用map来做离散化。

const int maxn = 1000005;
map<int, int> mp;
int a[maxn];
int n;
int main()
{
    //freopen("in.txt","r",stdin);
    //frepoen("out.txt","w",stdout);
    int t;
    cin >> t;
    while(t--)
    {
        cin >> n;
        for (int i = 0;i < n;++i)
            scanf("%d",&a[i]);
        int l = 0, ans = 0;
        mp.clear();
        for (int r = 0;r < n;++r)
        {
            mp[a[r]]++;
            while(mp[a[r]] == 2) mp[a[l++]]--;
            ans = max(ans, r - l + 1);
        }
        printf("%d\n", ans);
    }
    return 0;
}


你可能感兴趣的:(uva11572 Unique Snow akes(入门级TwoPoint))