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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章