UVA 11572

滑动窗口问题

题目:https://uva.onlinejudge.org/external/115/11572.pdf

比较简单 自己体会

#include <iostream>
#include <cstdio>
#include <set>
using namespace std;
int main(){
    int CASE,n,a[1000005];
    scanf("%d",&CASE);
    while (CASE--) {
        scanf("%d",&n);
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);

        set<int> s;
        int L=0,R=0,ans=0;
        while (R<n) {
            while (R<n && !s.count(a[R])) {s.insert(a[R++]);}
            ans=max(ans,R-L);
            s.erase(a[L++]);
        }
        printf("%d\n",ans);
    }
    return 0;
}
点赞