zoukankan      html  css  js  c++  java
  • UVa 11572

    题目大意:

    给n个数, n<=100W,求一个连续子序列,这个子序列中没有重复的数,问这个子序列最长是多少?

    滑动窗口:当右端碰到有相同的数的时候,左端向右滑动一位数(图片出自:https://www.cnblogs.com/aze-003/p/5113562.html

    使用STL的set函数,保存a[l~r]中的所有元素集合,r增大时判断a[r+1]是否存在,若不存在则加1,否则l++继续判断

    #include <iostream>
    #include <cstring>
    #include <set>
    #include <cstdio>
    #include <algorithm>
    #define N 1e7+10
    
    using namespace std;
    int read()
    {
        int x=0,f=1;char c=getchar();
        while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
        while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
        return x*f;
    }
    
    int T,n,a[10000005];
    int main()
    {
    
        T=read();
        while(T--){
            n=read();
            for (int i=0;i<n;i++) a[i]=read();
            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(r-l,ans);
                    s.erase(a[l]);
                    l++;
            }
            cout<<ans<<endl;
    
        }
    
    
        return 0;
    }
  • 相关阅读:
    维度漫谈
    维度漫谈
    世界名曲
    世界名曲
    音乐的要素
    音乐的要素
    POJ 1300 欧拉通路&欧拉回路
    C库函数笔记
    malloc()参数为0的情况
    层层递进Struts1(三)之Struts组成
  • 原文地址:https://www.cnblogs.com/Fy1999/p/9393743.html
Copyright © 2011-2022 走看看