双指针求hack
查看原帖
双指针求hack
837888
Fractured_Angel楼主2023/10/15 09:36
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <map>
using namespace std;
const int MAXN = 1000005;
int T;
int a[MAXN];
map<int, int> mp;
int main()
{
    scanf("%d", &T);
    while(T --)
    {
        int n;
        scanf("%d", &n);
        if(n == 0)
        {
            puts("0");
            continue;
        }
        mp.clear();
        for(int i = 1;i <= n;i ++) scanf("%d", &a[i]);
        int ans = 1;
        for(int i = 1, j = 1; i < n; )
        {
            while(mp[a[j]] == 0 && j <= n)
            {
                mp[a[j]] ++;
                j ++;
            }
            ans = max(ans, j - i);
            while(i < j)
            {
                mp[a[i]] --;
                i ++;
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}
2023/10/15 09:36
加载中...